回退到本地提交?

46

我从我的代码库中拉取了代码,结果搞糟了一切。我想将整个项目恢复到最近的本地提交状态。应该如何操作?

3个回答

82

这将重置到您的当前提交(丢弃所有更改,包括已暂存的和未暂存的更改):

git reset HEAD --hard

这将重置所有内容到之前的提交状态(同时删除所有更改,无论是已暂存还是未暂存)

git reset HEAD^ --hard

在 HEAD 旁边的 ^ 意味着 HEAD 前一个提交,HEAD 是当前所在的位置。您可以使用 ^^ 返回两个提交,或者使用 ^^^ 返回三个提交。此外,您可以使用波浪号来指定提交的数量:~3 表示向后三个提交。

git reset HEAD~3 --hard

请记住,--hard选项意味着这些命令将丢弃您未存储的任何更改。


4
在这个答案中,看到了建议使用git reset --hard时附带适当的安全警告,这总是很好的——令人担忧的是,许多StackOverflow答案并没有提供这样的警告... - Mark Longair
1
请注意:如果你在本地提交(commit)之后进行了pull操作,这将会删除你的本地提交。可以参考以下链接撤销该操作:http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html - Ed Bishop
@EdBishop Git 的好处在于你几乎永远不会真正失去任何东西。 - Chris Rasys
@ChrisRasys 确实,它已经帮我们省了不少次的事 :D - Ed Bishop

18

git log 中定位到您最后一次本地提交,然后运行git reset --hard <commit sha1>

这会删除您尚未提交的所有本地更改,并将HEAD移动到此提交。


4

git pull 可以获取并合并多个提交。如果要返回到之前的本地状态(而不是返回 n 个提交),可以使用 refloggit reset --hard @{1}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接