可能重复:
Git:恢复到以前的提交状态
我已经尝试对我的代码进行一些更改,但我搞砸了太多事情(当你累了并且已经很晚时永远不会工作),我只想回到我的最后一次提交。我没有做git add
,或者git commit
很明显,如果我做git pull
了一切都是最新的。
我以为那git checkout
是我需要的,但它没有用..有什么帮助吗?
可能重复:
Git:恢复到以前的提交状态
我已经尝试对我的代码进行一些更改,但我搞砸了太多事情(当你累了并且已经很晚时永远不会工作),我只想回到我的最后一次提交。我没有做git add
,或者git commit
很明显,如果我做git pull
了一切都是最新的。
我以为那git checkout
是我需要的,但它没有用..有什么帮助吗?
提到的答案reset --hard
将做你想要的(以及你可能会或可能不会做的其他一些事情),但你认为这checkout
是你需要的命令是正确的。问题是它checkout
做了两件不同的事情,所以你需要为它提供一个路径参数:
git checkout .
从您的存储库的根目录中您就可以了。
不要git reset -hard
它是永久性的!
请用
git stash -u
反而!如果您在其中有一件不小心损坏的作品,您仍然可以将其取回。这永远不会被推送到您的遥控器,除非您选择通过创建一个分支并将其向上推送来这样做。
此外,您在正确的轨道上可以使用 git checkout 来完成同样的事情。语法是git checkout HEAD -- .
. 但它有同样的问题git reset --hard
。坚持藏起来,你将来会避免掉头发。
更长的答案
上述解决方案将还原您的所有更改。但是,您问如何摆脱某些更改。为了完整起见,我将添加此内容。
为此,您可以
git add file1 file2 file3
git stash save --patch
现在将提示您确切地想要消失的内容......直到粒度级别。因此,如果您选择这样做,您可以安全地“拒绝”对单个文件的少量更改。
git reset --hard
这将删除您对存储库中最后一次提交的所有未跟踪更改。
git reset --hard
会丢弃你所有的工作,但你可能想做:
git stash save "A bunch of stuff that didn't work"
如果您想恢复一些更改。