Gitを使って開発を進めていると、細かな変更を頻繁にコミットすることがあります。最終的にこれらの変更を一つのまとまったコミットとして整理したい場合、Gitのrebase
機能を使って複数のコミットを一つにまとめる(squash)ことができます。本記事では、その手順を詳しく説明します。
Contents
複数のコミットを一つにまとめる
ローカルリポジトリで複数のコミットを一つにまとめます。
コミット履歴を確認
ターミナルで以下のコマンドを実行し、直近のコミット履歴を確認します
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
まとめ
この手順で、複数のコミットを一つにまとめ、リモートリポジトリにプッシュすることができます。
これで、複数のコミットが一つにまとめられ、クリーンなコミット履歴を保つことができます。