假设我在本地对我的文件进行了一系列更改,然后将这些更改添加到临时索引中,然后提交它们。然后我意识到,实际上,我犯了一些错误,我想迅速撤销整个提交,并回到我提交之前的位置(即将我的更改从repo中删除并放回索引中)。
我试图做一个git revert SHA
,这确实取消了我最近的提交,但它也完全覆盖了我的所有文件,并将它们恢复到原始状态。
如何在不覆盖更改的情况下恢复提交?
发布于 2013-06-11 15:27:55
你在找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)"
https://stackoverflow.com/questions/17047892
复制