我正在尝试将所有提交和文件回滚到特定提交。我想摆脱我所做的所有更改以及从特定提交开始创建的所有文件。
我尝试使用以下方式回滚:
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>>
答案 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
移回该分支。