1121
Help us understand the problem. What are the problem?

posted at

updated at

Organization

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

コミットの取り消し

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

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}@^^^は同じ意味。

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

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

コミットの打ち消し

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

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

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

コミットの上書き

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

git commit --amend

を叩けばOK。

  • コミットメッセージを変更したい時よく使う。
  • git rebase失敗した時、コンフリクトを避けるためにコミットを上書きする」という使い方もよくする。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1121
Help us understand the problem. What are the problem?