Git取消未push的commit的作法如下。
未push的commit是指僅在本機做了commit,但尚未push到remote repository。
例如前一刻不小心commit了改錯的README.md
想要取消,在終端機或Git Bash命令列輸入git reset HEAD^
即可取消commit。
$ git reset HEAD^
Unstaged changes after reset:
M README.md
上面的指令相當於git reset --mixed HEAD^
。--mixed
是git reset
預設的模式參數,意思是取消git commit
及git add
,但保留本地工作目錄的異動。
所以執行以上命令取消commit後輸入git status
顯示如下。
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
若想取消上一次commit但保留異動在stage狀態,也就是保留git add
,則輸入git reset --soft HEAD^
。
若想取消上一次commit並復原所有異動,也就是檔案回復成修改前的狀態,則輸入git reset --hard HEAD^
,此命令務必小心使用以免辛苦付諸流水。
若想取消前兩次commit輸入git reset HEAD~2
。
沒有留言:
張貼留言