/var/log/messages

debugging with sixth sense

Pull Request な Branch を巻き戻す

手が滑って pull request した branch に微妙な修正を盛り込んでしまいました。この branch を元に戻しつつ、盛り込んだ修正は有効なのでこれはこれで別な branch にて pull request を発行したい。どうするか。

ええと今は

A    B    C
o----o----o

という並びになっていて時系列てきには C の方が最新な commit です。remote がスデにこうなってて C をステつつ C の commit は個別で PR 作りたいという非常に微妙な要求があったりして。

とりあえず

C な commit な issue を先んじて作成しとく必要ありますね。とりあえずその issue に紐が付いたカンジで branch を作っておいて

$ git checkout -b yamanetoshi-124

元の branch に戻って

$ git checkout yamanetoshi-116

一つ巻き戻し。

$ git reset --hard HEAD~1

そして

  • 既存の pull request を一旦クローズ
  • 該当する remote branch を削除 (yamenetoshi-116)
  • 巻き戻した local branch を push

でどうなるか。

pull request は手動で作成する必要があるみたいです。間違いのないよう、base は master で compare は push した branch (yamanetoshi-116) で作成。

これで一つは問題解決。もう一つの diff が以下なカンジ。

$ git diff yamanetoshi-124 
diff --git a/_config.yml b/_config.yml
index ae1ec0e..2088d78 100644
--- a/_config.yml
+++ b/_config.yml
@@ -2,7 +2,7 @@
 # For more see: http://jekyllrb.com/docs/permalinks/
 permalink: /:categories/:year/:month/:day/:title 

-exclude: ["vendor", ".rvmrc", ".rbenv-version", "README.md", "Rakefile", "changelog.md"]
+exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "changelog.md"]
 pygments: true

 # Migrating your Pages site from Maruku.

とりあえず master branch に戻って

$ git checkout master

あ、branch 作ってますね。これって rebase すれば良いのだろうか。とりあえずバックアップした branch を checkout してバックアップもせずに rebase -i してみます xD

$ git checkout yamanetoshi-124
$ git rebase -i HEAD~3

これで先頭のみ残して二つ削除したら最新 commit のみ残りました。これを push して pull request 作れば良いのか。かなり乱暴感ありますがおそらくこれでアタリのはず。

$ git push origin yamanetoshi-124

手が滑るとリカバー大変 xD

捕捉

git rebase -i で削除したい commit の行を dd コマンドで削除して :wq しております。

その後

pull request にコメントが。いくつか不備がある模様。修正頂いているようなのでローカルで確認。

$ git checkout yamentoshi-116
$ git fetch
$ git merge origin/yamanetoshi-116
$ bundle exec rake preview

微妙な操作はスルーで動作確認。

Comments