はじめに

チームリーダーにコミット履歴を綺麗にしてから
pushしてねと言われたよ。
開発中はこまめにコミットしていて、後から見ると
自分でも何が何だかよくわかんないな。。
どうすればいいの?

なるほど、rebaseコマンドを使用することで
複数のコミットをまとめることができるよ。
複数のコミットをまとめる
要点
rebaseコマンドのiオプションを使用することで複数のコミットを一つにまとめることができます。iオプションというのは、–interactiveの略で「対話的」という意味です。エディタが立ち上がり、対話的に履歴の編集を行うことができます。
上記のrebaseコマンド叩いたあとのエディタ上での操作では、
- コミットメッセージの編集は不要な場合→fixupを使う。
- コミットメッセージを編集したい場合→squashを使う。
fixupとsquashの違いについては、こちらの記事が分かりやすかったので気になる方はご覧ください。
具体的な使い方については、以降をご確認ください。
コミットメッセージの編集は不要な場合
まずは、「git log –oneline」コマンドでコミット状況を確認します。
下記のように、5つのコミットがあり、「third commit2」を「third commit」にまとめたいとします。

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

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

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

コミットメッセージも編集したい場合
まずは、「git log –oneline」コマンドでコミット状況を確認します。
下記のように、4つのコミットがあり、second~fourthの3つのコミットを「second commit」として一つにまとめたいとします。

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

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

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

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

終わりに
本記事はここまでとなります。ご覧いただきありがとうございました。
ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです。
コメント