[Git]コミットの取り消し、打ち消し、上書き

コミットの取り消し

直前のコミットをなかった事にするには

git reset --hard HEAD^

を叩けばOK。

  • --hardオプション:コミット取り消した上でワークディレクトリの内容も書き換えたい場合に使用。
  • --softオプション:ワークディレクトリの内容はそのままでコミットだけを取り消したい場合に使用。

  • HEAD^:直前のコミットを意味する。

  • HEAD~{n} :n個前のコミットを意味する。

    • HEAD^HEAD~{n}の代わりにコミットのハッシュ値を書いても良い。
    • gitのv1.8.5からは、「HEAD」のエイリアスとして「@」が用意されている。
    • HEAD~HEAD^@^は同じ意味。
    • HEAD^^^HEAD~3HEAD~~~HEAD~{3}@^^^は同じ意味。

コミットの打ち消し

作業ツリーを指定したコミット時点の状態にまで戻し、コミットを行う(コミットをなかったことにはせず、逆向きのコミットをすることで履歴を残す)には、

git revert コミットのハッシュ値

を叩けばOK。

コミットの上書き

直前のコミットに上書きするには、

git commit --amend

を叩けばOK。

  • コミットメッセージを変更したい時よく使う。
  • git rebase失敗した時、コンフリクトを避けるためにコミットを上書きする」という使い方もよくする。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする