撤销“回滚到此提交”

7
我刚接触git和github,遇到了一些麻烦。
我在使用Github for Windows来管理我的一个小项目。我发现我丢失了我最近所做的更改。 我所做的是:
  1. 更改了一些文件。
  2. 意外提交了更改。
  3. 还原提交。
  4. 然后按下“回滚到此提交”。
现在所有更改都消失了,包括我添加的一些新文件。我能否找回它们?我也已安装了 Git(命令行),因此可以执行任何您认为有用的命令。
2个回答

7

Git的一个好处是,除非你做了一些奇怪的事情,否则很难丢失任何东西。

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

假设你查看了Git日志,并确定哈希值为01dbc4...是你想要返回的时间点。要做到这一点,只需执行以下操作:

git reset --hard 01dbc4

请注意,如果您有未提交的更改,您需要首先将它们存储起来。
现在,如果该提交缺少您想要的额外文件,并且它们在稍后的提交中,那就会变得有点复杂。但是您可以将主分支设置为您要开始的位置,然后将一个分支设置为具有新文件的位置。然后,您可以从新分支中复制或有选择地合并缺失的信息到您的主分支,使您的主分支看起来符合您的要求。
请注意,即使像上面使用git reset --hard时移动了分支指针并且孤立了后续提交,您也可以通过检查git reflog并重置到它们,或创建指向它们的分支来获取它们。

5
请注意,现在(2013年3月)使用GitHub for Windows,您无需输入任何git命令即可撤消提交:

请参见“GitHub for Windows中的撤消按钮

我们已经为Discards、Commits、Rollbacks和Merges添加了撤消支持

Undo button


请问您能否提供GitHub for Windows circa May 10, 2014的逐步文字说明,以便回滚到指定提交吗?谢谢。 - Dave
@Dave,你的意思是,现在一个条目上不再有上下文菜单(如图所示),其中包含“放弃更改”的选项了吗? - VonC
不清楚“放弃更改”是否放弃从现在到过去所有的更改,还是仅限于该版本中所做的更改。如果意图是前者,那么应该称之为“回滚”或“放弃自此版本以来的所有更改”,或类似的名称。当然,一年多后,也许已经修复了? - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接