git reset --hard后文件没有恢复

时间:2013-03-06 18:32:53

标签: git

我正在尝试将所有提交和文件回滚到特定提交。我想摆脱我所做的所有更改以及从特定提交开始创建的所有文件。

我尝试使用以下方式回滚:

git checkout #commit_to_restore_to
git reset --hard #commit_to_restore_to

我收到HEAD is now at #commit_to_restore_to "Commit_message"

的确认信息

但是,我的文件和以前完全一样。如何回滚所有文件?

我在Ubuntu 12.10上。

以下是更多信息:

$ git status
<<fill this in>>

# git diff --name-status #commit_to_restore_to  #provide real commit number please.
<<fill this in too>>

4 个答案:

答案 0 :(得分:1)

重写分支引用的简便方法是

  

git branch -f master commit

如果你现在就在那个分支上

  

git checkout -B master commit

答案 1 :(得分:0)

如果您checkout提交,那么您在工作目录中拥有该提交的内容。因此reset没有任何内容。如果你这样做会有一些东西:

$ git checkout <commit>
# muck with files; do some other git stuff
$ git reset --hard <commit>

在上述情况下,reset实际上会做一些事情。

听起来你真正想要的是在提交后忘记一切然后继续开发。如果是这样,这可行(假设您在master分支上):

$ git checkout -b tmp-branch <commit>
$ git branch -d master
$ git branch -m tmp-branch master

你要小心上面的内容。

答案 2 :(得分:0)

我觉得很尴尬。文件正在改变,问题是文件夹没有。由于我的.gitignore有(例如)pyc文件,我在post提交后创建的文件夹仍然存在,因为它们中包含了这些文件。因为同样的树状结构不断出现,我只是在dir上做了一个ls并且疯了。

对不起,谢谢!

答案 3 :(得分:0)

小心!当你git checkout SHA时,你最终进入了一个浮动分支。 git status应该说:

# Not currently on any branch.

git checkout也发出警告。如果您想要使用master重置git reset --hard SHA分支,请先使用git checkout master移回该分支。