7

我是 git 和 github 的新手,我遇到了一些麻烦。

我正在使用github for windows来管理我拥有的一个小项目。我想我丢失了最近对代码所做的一些更改。我所做的是:

  1. 更改了一些文件。
  2. 不小心提交了更改。
  3. 还原了提交。
  4. 然后我按下“回滚到这个提交”。

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

4

2 回答 2

7

git 的优点之一是它真的很难丢失任何东西,除非你正在做一些奇怪的事情。

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

假设您检查 git log 并确定 hash 01dbc4... 是您想要返回的时间点。为此,只需执行以下操作:

git reset --hard 01dbc4

请注意,如果您有未提交的更改,则需要先存储它们。

现在,如果该提交缺少您想要的额外文件并且它们在稍后的提交中,它会变得有点复杂。但是您可以做的是将您的主分支设置为您想要开始的点,然后将一个分支设置为具有新文件的点。然后,您可以将缺少的信息从新分支复制或选择性地合并到您的主分支,使您的主分支看起来像您想要的那样。

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

于 2012-05-31T23:06:40.193 回答
5

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

请参阅“ Windows 版 GitHub 中的撤消按钮

我们添加了对 Discards、Commits、Rollbacks 和 Merges 的 Undo 支持

撤消按钮

于 2013-03-21T10:34:01.523 回答