🥦

【Git】push済みのコミットをまとめたい

2024/10/23に公開

自分だけが作業しているブランチであればgit rebaseでコミット履歴をきれいにまとめることができます。

1. git rebase -i でまとめたいコミットを指定する

terminal
git log

で現在のコミット状況を確認後、以下のコマンドを実行します。
例:3個前のコミット履歴から修正したい場合はgit rebase -i HEAD~3を実行

terminal
git rebase -i HEAD~n'

2. pickをfixupに修正する

viモードが起動し、n個前のコミット履歴から表示されます。

pick …変更なし
fixup …選択したコミットを 1 つ前のコミットに統合し、その際のコミットメッセージを破棄します。
例:git rebase -i HEAD~3を実行した場合は3個前から表示されます

使用するviのコマンド

入力キー 内容
i 挿入モードに変更(テキスト編集するためのモード)
esc コマンドモードに変更(テキストの保存やviの終了などを行う)
:wq 保存して閉じる
:q! 保存しないで閉じる

3. ローカルでログを確認する

terminal
git log

4. リモートのログを強制更新する

git rebaseで修正した場合は、コミット番号も新しく書き変わるので強制pushが必要になります。

terminal
git push -f origin [作業しているブランチ名」

5. GitHubでコミットがまとまっていることを確認する

リモートでコミットがまとまっていることが確認できたら終了です。お疲れ様でした。

【番外編】 git rebaseに失敗した場合の修正方法

git rebaseをしくじって元に戻したいとき

git reflogを使用してgitの作業履歴を確認します。

terminal
$ git reflog
ed1cab2 (HEAD -> working_branch, origin/master, origin/HEAD, master) HEAD@{0}: reset: moving to HEAD^^
617c754 HEAD@{1}: commit: Modify README.md
6d27530 HEAD@{2}: commit: Add base activity

戻りたい作業のハッシュを指定します。

terminal
git reset --hard 6d27530

この場合はAdd base activityをコミットしたところに戻ります。

Discussion