スポンサーリンク

git reset --soft HEAD~nで、直前のn個のcommitを取り消す

git reset --soft HEAD~nで、直前のn個のcommitを取り消すことができます。

例えば、下記の2つのcommitをしたとします。

 (master)$ touch file001.txt
 (master)$ git add file001.txt
 (master +)$ git commit -m "Add file001.txt"

 (master)$ touch file002.txt
 (master)$ git add file002.txt
 (master +)$ git commit -m "Add file002.txt"

直前の2個のcommitを取り消します。

 (master)$ git reset --soft HEAD~2
 

git statusすると、直前の2つのcommitが取り消されているのが確認できます。
 (master +)$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   file001.txt
	new file:   file002.txt

スポンサーリンク

git reset --soft HEAD^は直前の1commitを取り消す

git reset --soft HEAD^は直前の1commitを取り消します。

例えば、下記の2つのcommitをしたとします。

 (master)$ echo "test" >>file001.txt 
 (master *)$ git add file001.txt
 (master +)$ git commit -m "Tmp commit"

 (master)$ echo "test" >>tmp2.txt 
 (master *)$ git add tmp2.txt
 (master +)$ git commit -m "tmp 2nd commit"

直前の1commitを取り消します。

 (master)$ git reset --soft HEAD^
 

git statusすると、直前のtmp2.txtの追加のcommitが取り消されているのが確認できます。
 (master +)$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   tmp2.txt

更に、もう一回git reset --soft HEAD^を実行してみます。
 (master +)$ git reset --soft HEAD^
 

git statusすると、更に、直前の1commitが取り消されているのが確認できます。
 (master +)$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   file001.txt
	modified:   tmp2.txt

スポンサーリンク