1
  1. 我提交了我的更改,并开始开发一个新功能。
  2. 我意识到我把事情搞砸了
  3. 需要恢复到之前的提交。

我做了什么。

git add .
git commit -m "Screwed Up"
git branch -m experiment
git checkout 62b5 (SHA1 of previous commit)
git checkout -b master
git branch -D experiment

我认为必须有更好的方法来恢复之前的提交。

当我尝试时git reset HEAD,它仍然会显示未提交的更改,而当我这样做时git status

如果有更好的方法来做到这一点,它是什么?还是我应该使用不同的工作流程来避免这种情况?

4

2 回答 2

3

您可以git reset --hard恢复到之前的提交。

--hard将重置索引和工作树。自上次提交以来对工作树中跟踪文件的任何更改都将被丢弃。

于 2012-12-23T21:42:58.903 回答
1

reset --hard如果可能,不要这样做。如果您有未跟踪或未暂存的更改,则它是可撤消的。采用

git stash -u

为了安全。您将再次获得一个干净的工作目录。如果您错误地丢弃了更改,您始终可以通过 git stash 命令取回它们。

隐藏的更改不会被推高,因此它不会弄乱其他存储库上的任何内容/膨胀其他存储库,但会给您一些安全网。因此,如果您重新克隆,您将丢失您的藏匿处。因此,重新克隆以解决您的 repo 问题也是一个坏主意 - 您还可能丢失您的 rerere 记录、reflog 等。

于 2012-12-23T22:06:35.323 回答