LoginSignup
1701
1360

More than 1 year has passed since last update.

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

Last updated at Posted at 2014-09-12

コミットの取り消し

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

git reset --soft HEAD^

を叩けばOK。

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

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

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

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

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

git resetの詳細は、下記記事に詳しく書いているので、ぜひ参考にされてください。

▼[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe

コミットの打ち消し

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

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

を叩けばOK。指定したコミットを打ち消すコミットを作成することができます。

コミットの上書き

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

git commit --amend

を叩けばOK。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1701
1360