0

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

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

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

4 回答 4

1

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

git branch -f mastercommit

如果你现在在那个分支上,你可以

git checkout -B mastercommit

于 2013-03-06T19:31:46.790 回答
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

你会想要小心上面的。

于 2013-03-06T19:20:03.163 回答
0

我觉得好尴尬。文件正在更改,问题是文件夹没有。由于我的 .gitignore 有(例如)pyc 文件,因此我在提交后创建的文件夹仍然存在,因为其中包含这些文件。我只是在目录上做一个 ls 并且因为相同的树结构不断出现而发疯。

对此感到抱歉,谢谢!

于 2013-03-07T07:06:19.333 回答
0

小心!当你这样做时,git checkout SHA你最终落在了一个浮动的分支上。 git status应该这样说:

# Not currently on any branch.

There was also a warning from git checkout. If you wanted to reset your master branch with git reset --hard SHA you want to move back to that branch first with git checkout master.

于 2013-03-07T07:11:08.547 回答