BLOG

ブログ

2025/05/12 技術系

コミット履歴を整える git rebase

この記事を書いた人 Y.S

Gitを使って開発をしているときに「複数の小さなコミットを1つにまとめたい」ことや、「コミットメッセージを修正したい」と思うことがあります。そんなときに使えるのがgit rebaseです。

今回は git rebaseでコミット履歴を整理する方法をご紹介します!

コミットを1つにまとめる

「複数の小さなコミットを1つにまとめたい」時にgit rebase -iを使って複数のコミットを統合(squash)できます。

手順

git log --onelineでコミット履歴を確認します。

789ijkl 修正コミットC
efgh456 コミットメッセージB
123abcd コミットメッセージA

直近の3コミットを1つにまとめることを想定して、git rebase -i HEAD~3を実行すると、エディタが開き、下記のように表示されます。

pick 123abcd コミットメッセージA
pick efgh456 コミットメッセージB
pick 789ijkl 修正コミットC

下記のように修正します。(「squash」は「s」の省略形でも表記可能です。)

pick 123abcd コミットメッセージA
squash efgh456 コミットメッセージB
squash 789ijkl 修正コミットC

修正後に保存すると、次にコミットメッセージのエディタが下記のように開きます。

# This is a combination of 3 commits.
# This is the 1st commit message:
コミットメッセージA
# This is the commit message #2:
コミットメッセージB
# This is the commit message #3:
修正コミットC

最終的に残すコミットメッセージに書き換えます。

# This is a combination of 3 commits.
# This is the 1st commit message:
コミットメッセージABC
# This is the commit message #2:
# This is the commit message #3:

保存して終了すると、複数のコミットが1つにまとまります。再度git log --onelineを実行することで変更されたことを確認することができます。

opqr012 コミットメッセージABC

コミットメッセージを修正する

「コミットメッセージを修正したい」時もgit rebase -iを使います。

手順

git log --onelineでコミット履歴を確認します。

今回は特定のコミットメッセージをピンポイントで修正することを想定して、コミット履歴から修正したいコミットの一つ前のコミットIDを確認します。

mnop012 コミットメッセージD
789ijkl 修正コミットC <-修正したい
efgh456 コミットメッセージB
123abcd コミットメッセージA

コミットIDが「789ijkl」のものを修正したいので、git rebase -i efgh456を実行します。すると、エディタが開いて下記のように表示されます。

pick 123abcd コミットメッセージA
pick efgh456 コミットメッセージB
pick 789ijkl 修正コミットC <-修正したい

下記のように修正します。(「reword」は「r」の省略系でも可)

reword 789ijkl 修正コミットC <-修正したい
pick efgh456 コミットメッセージB
pick 123abcd コミットメッセージA

すると、コミットメッセージのエディタが開くので、コミットメッセージを書き換えます。

最後にコミットメッセージの内容が変わっているかをgit log --onelineで確認します。

mnop012 コミットメッセージD
789ijkl 修正コミットCC
efgh456 コミットメッセージB
123abcd コミットメッセージA

注意点

すでにプッシュしているコミットへの修正を行った場合、git pushだけではプッシュができません。そのため、git push --forceで強制的に上書きする必要があります。チームで開発している際は、git push --forceを使用する前に開発メンバーに確認したり相談して使用することをお勧めします!!

まとめ

  • git log --onelineでコミット履歴を確認
  • git rebase -i HEAD~3で直近のコミット3つを編集できる
  • git rebase -i [コミットID]で特定のコミットよりも後のコミットを編集できる
  • squash を使えば、複数のコミットを1つにまとめられる
  • reword を使えば、過去のコミットメッセージ修正できる
  • チーム開発の際はgit push --forceを慎重に使用すること

今回はgit rebaseを活用した、コミット履歴の整える方法についてご紹介しました。無駄なコミットを減らし、美しいコミット履歴を維持したいときはgit rebaseを活用してみてください💡



株式会社ウイングドアは福岡のシステム開発会社です。
現在、私達と一緒に"楽しく仕事が出来る仲間"として、新卒・中途採用を絶賛募集しています!
ウイングドアの仲間達となら楽しく仕事できるかも?と興味をもった方、
お気軽にお問い合わせ下さい!

アーカイブ