直前のコミットを取り消す

HEAD だけ戻す。

$ git reset --soft @~

HEAD とインデックスを戻す。(git add も戻す。)

$ git reset @~

ワーキングツリーの変更を全て元に戻す。(※ファイルに加えた変更は失われるので注意)

$ git reset --hard @~

参考:

Git でやらかした時に使える 19個の奥義 – Qiita

git commit --amend を取り消す

HEAD の履歴を確認する。

$ git reflog

HEAD を一つ前の状態に戻す。(git add も取り消す。)

$ git reset HEAD@{1}

HEAD を一つ前の状態に戻す。(git add はそのまま残す。)

$ git reset --soft HEAD@{1}

参考:

git commit --amend を取り消す or キャンセルする方法 | まさかろぐ

git commit --amend の取り消し | rilakkuma3xjapan’s blog

git add を取り消す

最初のコミット前の場合、git rm コマンドに --cached オプションを付けて実行する。

$ git rm --cached -- path/to/file

何かしらコミット済みの場合、git reset コマンドで HEAD の状態に戻す。

$ git reset @ -- path/to/file

参考:

git add を取り消す – Qiita

git add したファイルを取り消しする方法! | Qumeru マガジン

fatal: ambiguous argument ‘HEAD’: unknown revision or path not in the working tree. となった時の対応方法 – Qiita

git merge を取り消す

マージの履歴を確認する。

$ git log --oneline --graph

マージコミットを取り消す。(マージ直後は ORIG_HEAD で元のコミットを参照できる。)

$ git reset --hard ORIG_HEAD

参考 

Git でやらかした時に使える 19個の奥義 – Qiita

git merge を取り消す | tweeeety のぶろぐ的めも

ファイルの変更を取り戻せないケース

Git で変更を取り戻せないケース
  • コミットしていない変更を git checkout で上書きした。
  • コミットしていない変更を git reset --hard で上書きした。
回避方法
  • エディタのバックアップ機能を使う。
  • git stash -u で退避して履歴を残しておく。
  • 作業ブランチに WIP としてこまめにコミットする。

参考:

Can git undo a checkout of unstaged files – Stack Overflow

最初のコミットを取り消す

git update-ref コマンドを使う。

$ git update-ref -d HEAD

参考:

初回のコミットを取り消したいときには git update-ref を使う | すずけんメモ

git の最初のコミット (initial commit) を revert したい | 69log

How to revert initial git commit? – Stack Overflow

How to remove the first commit in git? – Stack Overflow

git revert コマンド

参考:

いまさらの revert – Qiita

まとめ

git commit を取り消したい、元に戻す方法まとめ | RAKUS Developers Blog

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA