#なぜgit rebaseをしたのか
github上のPR上でissueの解決を進めていました。
いざmasterにmergeできるかと思った際に、masterよりかなり遅れている作業branchであったことがわかったためrebaseを行ないました。
#rebaseの開始
$ git rebase master
これでrebaseを開始できます。
その後、conflictが発生したため、修正→git rebase --continue/skip
ということを行なった。
$ git rebase --continue
// if nothing to change but still rebase is not finised,
// rebaseが終わらなかったらskipで加えて進めていきました。
$ git rebase --skip
// conflictが生じたらその都度修正していきます。
最終的にrebaseしているbranchの内容を作業branchにapplyすることになり以下のように行いました。
$ git add .
$ git commit -m "fix: something"
$ git push
このようにcommitが膨れ上がってしまいました。ありゃありゃ。
#解決策
$ git reset --hard HEAD~4 // rebase前のコミットへ変更しました。
$ vim src/... // ファイルを編集するなどしてエラーを消します。
$ git add . // 変更を加えてコンフリクトもなくなれば、コミットします。
$ git commit -m "fix: errors"
$ git push --force // ここのpush --forceであるのを忘れないように。
// 必要であれば
$ git cherry-pick // rebaseの後のコミットの変更を反映してもいいかと。
#反省
git rebase --continue
をした時にgit push --force
をする必要がありました。
少ないコミットで綺麗なPRを心がけていきます。