恢复到先前的提交并忽略git中任何未提交的更改

时间:2012-08-20 14:01:02

标签: git commit revert

我是git的初学者,在尝试将所有内容恢复到我最后一次提交时遇到了一些问题。我不介意丢失任何我想要撤消所有内容的更改。我试过这个:

git revert b78da61000bc049133f4a5f7df6ddb3b6407454f

但我得到了

error: Your local changes to the following files would be overwritten by merge. 
Please, commit your changes or stash them before you can merge.
Aborting

我不想提交这些新的更改,因为显然它们不起作用,我只是想摆脱它们。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

git revert意味着创建一个新的提交,“撤消”在指定提交中完成的更改。

你想:

git reset --hard <commit>

(这将从工作目录中删除任何未提交的更改,并将当前分支设置为指定的提交)

请注意,重置会修改历史记录。因此,如果您已经推送了这些提交,则不建议仅通过重置它们来删除它们,因为当您(强制)推送新历史记录时,其他人必须将其更改重新更改为新历史记录。

请参阅man git-resetReset Demystified

答案 1 :(得分:1)

git reset --hard HEAD

如果您只想删除工作副本中的所有更改,可以执行以下操作:

git reset --hard HEAD

HEAD是您当前分支中的最后一次提交(假设您在分支中)

git revert不是你想要的

git revert不会执行您要执行的操作,它用于撤消提交(提交与现有提交完全相反的操作,以便在保留历史记录的同时删除它,同时保留历史记录)。 / p>