Meaningless Notebook

我輩は雑記帖である。名はまだない。


Git の Commit Log を編集するのではなく、Commit 自体を取り消す。

本作業が必要になったケ-ス

Commit の内容や、Commit したユ-ザ-の情報が問題な場合。

手順

リモ-トとロ-カルのリポジトリの内容が同じ状態で、ロ-カルのリポジトリを操作→ Commit → Push (強制) でCommit Log から問題の Commit を取り除く。

1.リモ-ト・ロ-カルの同期

git pull 等でロ-カルのリポジトリをリモ-トと同じにする。

2.Git Rebase で Commit 履歴を操作

下記コマンドを実行してCommit 履歴を操作する。

git rebase -i HEAD~n

*

『n』は最新の Commit から取り消したい Commit までの累積 Commit 数 + 1

Commit 識別番号を元に、表示された Commit 履歴の行から取り消したい Commit までを削除して保存する。

保存して問題なければ下記メッセ-ジが表示される。

Successfully rebased and updated refs/heads/master.

下記コマンドを実行してリモ-トリポジトリへ強制 Push する。

git push -f

最後に

履歴管理の履歴自体を操作する作業なので、もうやりたくないと思った (小並感)。

参考元

  1. pandazx’s blog
  2. Hack Your Design!
  3. 開発ブログ
  4. git rebase についてまとめてみた

Amazon