【Git】rebaseコマンドを使用してコミット履歴を整理する

【Git】rebaseコマンドを使用してコミット履歴を整理する その他
スポンサーリンク

はじめに

ぴんくうさぎ
ぴんくうさぎ

チームリーダーにコミット履歴を綺麗にしてから

pushしてねと言われたよ。

開発中はこまめにコミットしていて、後から見ると

自分でも何が何だかよくわかんないな。。

どうすればいいの?

みどりがめ
みどりがめ

なるほど、rebaseコマンドを使用することで

複数のコミットをまとめることができるよ。

この記事で分かること
  • 複数のコミットをまとめる方法
  • squashとfixupの用途と使い分け方

複数のコミットをまとめる

要点

rebaseコマンドのiオプションを使用することで複数のコミットを一つにまとめることができます。iオプションというのは、–interactiveの略で「対話的」という意味です。エディタが立ち上がり、対話的に履歴の編集を行うことができます。

git rebase -i HEAD~<HEADから数えた編集対象としたいコミット数>

上記のrebaseコマンド叩いたあとのエディタ上での操作では、

  • コミットメッセージの編集は不要な場合→fixupを使う。
  • コミットメッセージを編集したい場合→squashを使う。

fixupとsquashの違いについては、こちらの記事が分かりやすかったので気になる方はご覧ください。

具体的な使い方については、以降をご確認ください。

コミットメッセージの編集は不要な場合

まずは、「git log –oneline」コマンドでコミット状況を確認します。

下記のように、5つのコミットがあり、「third commit2」を「third commit」にまとめたいとします。

コミット履歴(rebase前)

rebase -iコマンドを使用すると下記のエディタが立ち上がります。
編集するのは上から3行のpickと書かれた箇所です。エディタに表示される、コミット履歴は上が古いもの、下が新しいものとなっていますね。

git rebase -i HEAD~3
rebaseコマンド(編集画面)

third commit2をthird commitにまとめたい場合、下記のように「pick→fixup」に書き換え、エディタを保存します。

rebase(修正内容)

git log –onelineで確認するとthird commitのみになっていることを確認できました。

rebase結果

コミットメッセージも編集したい場合

まずは、「git log –oneline」コマンドでコミット状況を確認します。

下記のように、4つのコミットがあり、second~fourthの3つのコミットを「second commit」として一つにまとめたいとします。

rebase前

rebase -iコマンドを使用すると先ほどと同様、エディタが立ち上がります。
今回はthirdとfourthの箇所をpick→squashに修正して、保存します。

rebase(編集画面)

すると下記のようにメッセージを編集する画面になります。

rebase(メッセージ編集画面)

今回はsecond commitに一つにまとめるので、以下のように修正して保存します。

rebase(メッセージ編集画面)

git log –onelineをするとコミットがまとめられていることが確認できました。

rebase後の確認

終わりに

本記事はここまでとなります。ご覧いただきありがとうございました。

ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです。

コメント