【问题标题】:Revert to previous commit and ignore any uncommited changes in git恢复到以前的提交并忽略 git 中任何未提交的更改
【发布时间】:2012-08-15 20:52:10
【问题描述】:

我是 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

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

【问题讨论】:

    标签: git commit revert


    【解决方案1】:

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

    你想要:

    git reset --hard <commit>
    

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

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

    man git-resetReset Demystified

    【讨论】:

    • 所以基本上区别在于,如果我先提交而不是还原,我的历史记录中仍然会有更改,但是重置后它们会被完全删除?
    • 是的。请注意,仅当该历史记录尚未发布时才应进行重置。如果它已经发布(并且其他人已经对其进行了研究,那么 revert 可能是一个更好的选择)
    【解决方案2】:

    git reset --hard HEAD

    如果您只想删除工作副本中的所有更改,您可以这样做:

    git reset --hard HEAD
    

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

    git revert 不是你想要的

    git revert 不会做您想做的事情,它用于撤消提交(提交与现有提交完全相反的内容,因此最终效果是删除它,同时保留历史记录)。

    【讨论】:

      猜你喜欢
      • 2011-03-15
      • 1970-01-01
      • 2011-06-27
      • 2010-11-21
      • 1970-01-01
      • 2017-11-18
      • 2020-04-29
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多