rebase 周りでミスってしまったので、解決方法をメモする。
事の顛末
- ref-books から派生した amazon-api ブランチをつくった
- PRを出すときに master を rebase してしまった ← ミスった😇
- 本来は ref-books を rebase して push すべき
解決
reflog
はその名のとおり、ログを参照できるコマンド。コミットだけではなく、rebase など今までの行動を調べることができる。
今回の場合、引数に amazon-api を指定して、rebase した以前のログを見る。
$ git reflog amazon-api 425b1140 (HEAD -> amazon-api) amazon-api@{0}: reset: moving to amazon-api@{8} 304d0d44 (origin/amazon-api) amazon-api@{1}: reset: moving to amazon-api@{2} c750fa7b amazon-api@{2}: commit: 不要なファイルを削除 b01ed09c amazon-api@{3}: rebase finished: refs/heads/amazon-api onto 7a50a3ba6ea576b303c694e7b71642c162cec080 304d0d44 (origin/amazon-api) amazon-api@{4}: commit: システムテストを修正 9f7f0aa1 amazon-api@{5}: reset: moving to 9f7f0aa bd138ba0 amazon-api@{6}: commit: スタブを使用 9f7f0aa1 amazon-api@{7}: commit: スタブを共通化 #ここがmasterをrebaseしたところ 9c926e8c amazon-api@{8}: rebase finished: refs/heads/amazon-api onto 7109564960f2521352ca59ca5d8f768408d5b299 #ここまで戻したい 425b1140 (HEAD -> amazon-api) amazon-api@{9}: commit: システムテスト修正
amazon-api@{9}
まで戻ればいいということがわかった。
次に、git reset --hard
で引数に渡した部分まで戻る。
$ git reset --hard amazon-api@{9}
本来はどうすればよかったか
そもそも、git rebase master
をする必要はなかった。master から派生したブランチではないので。
ではどうすればよかったか。
#ref-booksの最新情報をもってくる git checkout ref-books git pull origin ref-books #ref-booksをrebaseする git checkout amazon-api git rebase ref-books (コンフリクトしてたら直す) git push origin amazon-api --force-with-lease