はじめに
本記事ではgit rebase
を使用する際の流れや注意点についてまとめます。
featureブランチで作業した内容をリモートリポジトリにpushし、レビュー指摘をもとに修正して再度コミットして、修正漏れに気がついて再度コミット、、、
ということを繰り返している内にコミットログが見づらくなってしまうことがあると思います。そういった時にgit rebase
を用いることでコミットログをきれいに保つことができます。
git rebase
は危険、初心者はgit merge
を使用しようという旨の記事を目にすることがありますが、
初心者であってもいくつか気をつけるだけで安全にgit rebase
を使用できるので、その方法についてまとめます
手順
まずgit log
を実行しまとめるコミットを確認します。
$ git log --graph --oneline
* 1a54b9f (HEAD -> feature/test) commit3
* 9d1409f commit2
* a216696 commit1
* eb45304 (origin/master, origin/HEAD, master) no_comment
上記のようなコミットログで、commit1 ~ commit3 をまとめたい場合、commit1 の直前のコミットハッシュを指定します。
はじめのコミット以外をfixupで一つにまとめる
$ git rebase -i eb45304
pick 9b404a2 commit1
fixup da38f05 commit2
fixup 3ba341f commit3
複数のコミットが一つにまとめられていることが確認できます。
$ git log --graph --oneline
* 8148b67 (HEAD -> feature/test) commit1
* eb45304 (origin/master, origin/HEAD, master) no_comment
すでにリモートリポジトリに push している場合は、このままpushするとコンフリクトします。
その場合、リモートブランチを削除した後、新ブランチとしてpushすることでコンフリクトを回避することができます。
安全にgit rebaseするために
featureブランチのような、そのブランチに対してコミットしているのが自分だけの場合にgit rebase
を使用しましょう。こういった場合はコミット履歴を書き換えても何も問題ありません。
反対に自分以外も使用しているブランチに対してgit rebase
を行う場合はリスクを伴います。
また開発メンバで共有で使用するブランチ(developブランチなど)に直接 push 不可能にすることで、git rebase
した結果を共有ブランチに誤って push してしまうという事故を防ぐことができます。
おわりに
本記事ではgit rebase
を使用する際の流れや注意点についてまとめました。安全にgit rebase
を使用して、振り返った時に分かりやすいコミットログを保ちましょう。
この記事がどなたかの参考になれば幸いです。
コメント