我如何撤消工作区中的某些更改并返回上次提交?

时间:2012-06-29 18:27:36

标签: git

  

可能重复:
  Git: Revert to previous commit status

我在我的代码中尝试了一些更改,但是我搞砸了太多的东西(当你累了,而且已经很晚了,从不工作)我只想回到我的最后一次提交。我没有git addgit commit,显然如果我git pull,一切都是最新的。

我认为git checkout是我需要的,但它没有用......有什么帮助吗?

4 个答案:

答案 0 :(得分:11)

提及reset --hard的答案会做你想要的(以及你可能会或可能不会做的其他事情),但你认为checkout是你需要的命令是正确的。问题是checkout做了两件不同的事情,所以你需要为它提供一个路径参数:

git checkout .

来自您的存储库的根目录就可以了。

答案 1 :(得分:5)

请勿git reset -hard它是永久性的!

请使用

git stash -u 

,而不是!如果你有一件工作在那里偶然发生,你仍然可以把它拿回来。这永远不会被推到你的遥控器上,除非你选择通过制作一个分支并推动它来实现这一目标。

此外,您正走在正确的轨道上,您可以使用git checkout来完成同样的事情。语法为git checkout HEAD -- .。但它与git reset --hard有同样的问题。坚持藏匿,你将来会失去你的头发。

更长的答案

上述解决方案可以恢复所有更改。但是,您询问如何摆脱某些的更改。为了完整起见,我会加上这个。

要做到这一点,你可以

git add file1 file2 file3
git stash save --patch

现在,系统会提示您确切要求消失的内容......直到任何级别的粒度。因此,如果您选择这样做,您可以安全地“拒绝”对单个文件进行一些更改。

答案 2 :(得分:2)

git reset --hard这将删除存储库中上次提交的所有未跟踪更改。

答案 3 :(得分:2)

git reset --hard会放弃您的所有工作,但您可能希望这样做:

git stash save "A bunch of stuff that didn't work"

关于您想要恢复某些更改的可能性。