複数のコミットを一つにまとめる方法(Git Squash)

Gitを使って開発を進めていると、細かな変更を頻繁にコミットすることがあります。最終的にこれらの変更を一つのまとまったコミットとして整理したい場合、Gitのrebase機能を使って複数のコミットを一つにまとめる(squash)ことができます。本記事では、その手順を詳しく説明します。

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

ローカルリポジトリで複数のコミットを一つにまとめます。

コミット履歴を確認

ターミナルで以下のコマンドを実行し、直近のコミット履歴を確認します

git log

インタラクティブリベースを開始

直近のコミット(例えば3つ)を一つにまとめる場合、以下のコマンドを実行します

git rebase -i HEAD~3

コミットをまとめる(squash)

ターミナル上で、テキストエディタが開くと思います。

最初のコミットを pick のままにし、それ以外のコミットを squash または s に変更します

pick <commit-hash> Initial commit 
squash <commit-hash> Add images for README 
squash <commit-hash> Update README with usage example and images

エディタを保存して閉じます。

コミットメッセージを編集

再度エディタが開き、まとめたコミットの新しいメッセージを入力します

保存して閉じます。

リモートリポジトリに強制プッシュ

ローカルリポジトリの履歴がリモートと異なるため、強制プッシュが必要です。

git push origin master --force

まとめ

この手順で、複数のコミットを一つにまとめ、リモートリポジトリにプッシュすることができます。

これで、複数のコミットが一つにまとめられ、クリーンなコミット履歴を保つことができます。