網頁

2021/7/22

Git 取消未push的commit

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^--mixedgit reset預設的模式參數,意思是取消git commitgit 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


沒有留言:

張貼留言