Git revert正在覆盖我的文件

时间:2013-06-11 15:23:33

标签: git commit git-reset git-revert

假设我在本地对我的文件进行了一系列更改,然后将这些更改添加到暂存索引,然后提交它们。然后我意识到实际上,我已经犯了一些错误,我想快速撤消整个提交并在我提交之前回到我正确的位置(即我的更改退出repo并返回索引)

我试图做git revert SHA这确实撤消了我最近的提交,但它也完全覆盖了我的所有文件并将它们恢复到原始状态。

如果没有覆盖我的更改,如何还原提交?

1 个答案:

答案 0 :(得分:3)

您正在寻找git reset --soft <last commit you want to keep>

但请注意,与revert不同,这将撤消您指定的提交后的所有提交(例如,如果您有A-B-C-D (HEAD)git reset --soft B,则CD将被取消,其中两个更改都保留在索引中。


当然,另一个选择是不撤消你的上次提交,而只是修改它以摆脱错误。您可以通过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)"
相关问题