LoginSignup
1
1

More than 1 year has passed since last update.

【実践】2つコミットを戻したいそこのあなたへ

Last updated at Posted at 2022-06-24

結論から

以下のコマンドを使うと、--softモードでコミットを2つ戻します

$ git reset --soft HEAD^^



記事の後半では --soft--hard の話や ^^についての話を書きます

時間のある方はご覧ください


まずは検証

現在のコミット状況

$ git log --oneline
4527f6d (HEAD -> master) add: c
74d50cc add: b
e1622d9 add: a

2つコミットを戻す

$ git reset --soft HEAD^^

戻りましたね👏

$ git log --oneline
e1622d9 (HEAD -> master) add: a

ちょっと注意

ここでstatusを確認すると

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   b
        new file:   c

2つのファイルがステージングされていますね

下記のコマンドでuntrackedにしましょう

$ git restore --staged b c

ステージング前に戻りました

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        b
        c

nothing added to commit but untracked files present (use "git add" to track)

あとはファイルを消したり、addしなおしましょう


--soft or --hard ??

--soft

上記で検証した通り、--softHEAD (最新のコミットの状態) の位置のみ更新し、

インデックスの状態は変わりません

なので、検証の時のようにb,cファイルがステージングされていました


--hard

ではhardだとどうなるのか?

インデックスやワーキングツリー(自分のファイルの状態)も戻ります

検証してみましょう


現在のコミット状況

$ git log --oneline
9a08549 (HEAD -> master) add: c
0c4a0b3 add: b
e1622d9 add: a

--hardをつけてresetします

$ git reset --hard HEAD^^
HEAD is now at e1622d9 add: a
$ git status
On branch master
nothing to commit, working tree clean
$ ls
a

完全に消えましたね!

--mixed

default(何も指定しない)だと--mixedになります

これはインデックスまで戻すため--softの際に行った

restore後の状態になりますね


^^ってなに?

2つ戻すってことです


下記のコマンドだと4つコミットを戻すことができます

$ git reset --soft HEAD^^^^



参考記事

1
1
2

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