我在我的代码中尝试了一些更改,但是我搞砸了太多的东西(当你累了,而且已经很晚了,从不工作)我只想回到我的最后一次提交。我没有git add
或git commit
,显然如果我git pull
,一切都是最新的。
我认为git checkout
是我需要的,但它没有用......有什么帮助吗?
答案 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"
关于您想要恢复某些更改的可能性。