6

可能重复:
Git:恢复到以前的提交状态

我已经尝试对我的代码进行一些更改,但我搞砸了太多事情(当你累了并且已经很晚时永远不会工作),我只想回到我的最后一次提交。我没有做git add,或者git commit很明显,如果我做git pull了一切都是最新的。

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

4

4 回答 4

12

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

git checkout .

从您的存储库的根目录中您就可以了。

于 2012-06-29T18:36:10.293 回答
7

不要git reset -hard它是永久性的!

请用

git stash -u 

反而!如果您在其中有一件不小心损坏的作品,您仍然可以将其取回。这永远不会被推送到您的遥控器,除非您选择通过创建一个分支并将其向上推送来这样做。

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

更长的答案

上述解决方案将还原您的所有更改。但是,您问如何摆脱某些更改。为了完整起见,我将添加此内容。

为此,您可以

git add file1 file2 file3
git stash save --patch

现在将提示您确切地想要消失的内容......直到粒度级别。因此,如果您选择这样做,您可以安全地“拒绝”对单个文件的少量更改。

于 2012-06-29T18:34:17.600 回答
2

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

于 2012-06-29T18:30:41.703 回答
2

git reset --hard会丢弃你所有的工作,但你可能想做:

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

如果您想恢复一些更改。

于 2012-06-29T18:34:13.950 回答