1
假設我在本地對文件進行了一系列更改,然後將這些更改添加到分段索引中,然後提交它們。然後我意識到,實際上,我犯了一些錯誤,我想快速撤銷整個提交,並在我承諾之前回到我正確的位置(即將我的更改退出回購並返回索引)。Git還原覆蓋我的文件
我試圖做一個git revert SHA
這確實取消了我最近的提交,但它也完全覆蓋了我所有的文件,並將它們恢復到原始狀態。
如何在不覆蓋我的更改的情況下恢復提交?
假設我在本地對文件進行了一系列更改,然後將這些更改添加到分段索引中,然後提交它們。然後我意識到,實際上,我犯了一些錯誤,我想快速撤銷整個提交,並在我承諾之前回到我正確的位置(即將我的更改退出回購並返回索引)。Git還原覆蓋我的文件
我試圖做一個git revert SHA
這確實取消了我最近的提交,但它也完全覆蓋了我所有的文件,並將它們恢復到原始狀態。
如何在不覆蓋我的更改的情況下恢復提交?
您正在尋找git reset --soft <last commit you want to keep>
。
不過請注意,不像revert
,這將一前一後撤消所有提交的指定(例如,如果你有A-B-C-D (HEAD)
你git reset --soft B
,既C
和D
將被撤消,既有的留在指數的變化) 。
當然,另一種選擇是不撤銷上次提交,而只是修改它以擺脫錯誤。你可以通過git commit --amend
這樣做,它的作用就像git commit
一樣,除了不是創建一個新的提交,而是修改(修改)最新的現有提交。
git commit -m "this commit has mistake(s)"
...edit the file(s) with mistake(s)...
git add <file>
git commit --amend -m "same commit, no mistake(s)"