2012-05-31 49 views
7

我是新来的git和github,我有一些麻烦。撤消“回滚到此提交”

我正在使用github for windows来管理我有的一个小项目。我认为我最近对代码做了一些改变。我做的是:

  1. 更改了一些文件。
  2. 意外犯下了这些更改。
  3. 恢复提交。
  4. 然后我按下“回滚到此提交”。

现在所有更改都消失了,包括我添加的一些新文件。我可以保存它们吗?我也安装了git(命令行),以便我可以执行任何你认为会有所帮助的命令。

回答

7

关于git的好处之一是,除非你做了奇怪的事情,否则很难失去任何东西。

你需要做的是找到代表你想成为的状态的点。

假设您检查git日志并确定散列01dbc4 ...是您想要返回的时间点。要做到这一点,只需执行:

git reset --hard 01dbc4 

请注意,如果您有未提交的更改,则需要先将其保存。

现在,如果该提交缺少您想要的额外文件,并且它们在以后的提交中,则会变得更加复杂。但是你可以做的是将你的主分支设置到你想要启动的地方,然后设置一个分支到有新文件的地方。然后,您可以复制或选择性地将新分支中缺失的信息合并到主分支,从而使您的主分支看起来如何。

请注意,即使您像使用git reset --hard时以及稍后提交孤立提交时那样移动分支指针,您可以通过检查git reflog并重置它们或创建指向它们的分支来取回它们。

+0

非常感谢!它工作完美! – nautilus7

+0

在我的情况下,git log没有显示被销毁的提交。 – Bulwersator

5

注意,现在(2013年3月),与GitHub上的Windows,您可以撤消,而无需输入任何命令的git提交:

请参阅 “Undo Button in GitHub for Windows

我们添加撤消对于丢弃的支持,提交,回退,并合并

Undo button

+0

您可以在2014年5月10日左右为GitHub for Windows提供详细的文本说明吗?哪个回滚到给定的提交?谢谢 – Dave

+0

@你的意思是,在一个条目上不再有上下文菜单(如图所示)并带有“放弃更改”条目? – VonC

+0

目前还不清楚“放弃更改”是否会丢弃从现在到现在所做的所有更改,或者仅更改此修订中所做的更改。如果前者是有意的,它应该被称为'回滚'或'丢弃所有的修改回到这个修订版,或者其他的一些。'一年后的课程,也许它是固定的? – Dave