今回はGitのcommitの取り消し、打ち消し、上書きについてまとめていきます。
コミットの取り消し
直前のコミットをなかった事にするには
git reset --hard HEAD^
を叩けばOKです。
--hard
オプション:コミット取り消した上でワークディレクトリの内容も書き換えたい場合に使用。--soft
オプション:ワークディレクトリの内容はそのままでコミットだけを取り消したい場合に使用。HEAD^
:直前のコミットを意味します。HEAD~{n}
:n個前のコミットを意味します。HEAD^
やHEAD~{n}
の代わりにコミットのハッシュ値を書いても良いです。- gitのv1.8.5からは、「HEAD」のエイリアスとして「@」が用意されています。
HEAD~
とHEAD^
と@^
は同じ意味。HEAD^^^
とHEAD~3
とHEAD~~~
とHEAD~{3}
と@^^^
は同じ意味。
コミットの打ち消し
作業ツリーを指定したコミット時点の状態にまで戻し、コミットを行う(コミットをなかったことにはせず、逆向きのコミットをすることで履歴を残す)には、
git revert コミットのハッシュ値
を叩けばOKです。
コミットの上書き
直前のコミットに上書きするには、
git commit --amend
を叩けばOKです。
- コミットメッセージを変更したい時よく使います。
- 「
git rebase
失敗した時、コンフリクトを避けるためにコミットを上書きする」という使い方もよくします。