0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Git】git resetコマンドで直前のコミットを取り消す方法

Posted at

「直前のコミットを取り消したい」というときに便利なのが git reset コマンドです。

git reset --mixed HEAD^

直前のコミットを取り消し、ステージングは解除されて変更は作業ツリーに残ります。

git reset --mixed HEAD^

つまり、git addする前の状態に戻ります。

git reset --soft HEAD^

直前のコミットを取り消し、変更内容はステージング状態に残します。

git reset --soft HEAD^

つまり、git commitする前の状態に戻ります。

git reset --hard HEAD^

直前のコミットを取り消すだけでなく、変更内容も完全に削除します。

git reset --hard HEAD^

変更が完全に消えるので、本当に不要なときだけ実行しましょう。

push 済みのコミットについて

もし既にリモートに push 済みのコミットを消したい場合は、そのままでは反映されません。

git push --force-with-lease origin ブランチ名

のように force push する必要があります。

--force-with-lease は、リモート先頭が自分の認識から動いていない場合のみ上書きを許可し、他人の新しい push を誤って消しにくくします。

その他の応用例

  • HEAD^ : 直前のコミット
  • HEAD~2 : 2つ前のコミット

と書くことで、直前以外のコミットも取り消せます。

つまり、以下のように実行すると直近2つのコミットを1つにまとめ直すこともできます。

git reset --soft HEAD~2

# まとめて再コミット
git commit

まとめ

  • git reset --mixed HEAD^
    git addする前の状態に戻す

  • git reset --soft HEAD^
    git commitする前の状態に戻す

  • git reset --hard HEAD^
    → コミットと変更内容も削除する

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?