2011-08-20 89 views
1

请帮助我是Git的新手 - 在我的应用程序中出现严重错误,我想恢复以前的提交 - 但没有任何工作 - 无论我做什么,我仍然可以看到本地硬盘上的更新文件。我怎样才能恢复到以前的提交,并确保这是我必须在我的本地机器上使用?Git撤消 - 确保本地文件与之前提交的Git相同

+0

'git status'输出是什么? – greg0ire

回答

1

重新回到上次提交:

$ git reset --hard HEAD 

请注意,所有未提交的更改将被丢弃。这会将所有文件恢复到上次提交状态。 HEAD也可以编辑以匹配提交的sha1哈希以恢复到特定的提交。

有关复位的详细信息,请阅读本:http://progit.org/2011/07/11/reset.html

+0

感谢您的快速回复和帮助 - 我已经做到了这一点,但似乎我的本地文件没有更新?我也删除了之前的提交(不知道我是如何做到这一点的 - 我已经绕圈了好几个小时),但是我已经在git hub上返回了大约3次提交 - 这是我想要的 - 但它没有反映在我的本地文件中 - 我一直在使用类似pull的命令 - 但似乎没有任何效果 –

+0

git status说了什么?任何改变都可以通过'git checkout - .'恢复,以确保文件列表镜像最后一次提交。 – Luwe

+0

Luwe - 我终于找到了工作 - 这是一个非常棒的链接 - 最后我想我已经开始掌握Git正在尝试做的事情 - 这只是一个谜 - 并且没有文档将其解释为简单的链接提供 - 非常感谢。 –

2

如果你还没有推,尽量git reset --hard HEAD

否则git revert HEAD将创建一个与您在最近一次提交时所做的完全相反的提交。

您还可以指定提交哈希而不是HEAD来撤消特定的提交。

0

第一件事情是,您可以临时应用git stash进行本地更改。您可以使用git stash apply返回这些更改。

如果问题不在您的本地更改中,您可以检查使用git checkout <commit-id>的旧版本,其中commit-id是提交的哈希,分支名称或像HEAD ^这样的特殊引用。之后您将使用detached head,这意味着如果您希望对已签出的版本进行任何代码更改,则必须从此版本创建一个新分支(git checkout -b <new-branchname>)。