GIT恢复最后一个分离的HEAD

Ign*_*ioC 64 git

请问,我的项目有一个大问题:这就是场景.我在GIT下有一个xcode项目.今天我意识到最后一次提交破坏了一些测试,所以我检查了之前的提交.我使用了SourceTree,这是警告

这样做会使您的工作副本成为"分离的HEAD",这意味着您将不再在分支机构上.如果您想在此之后提交,则可能需要再次签出分支,或者创建新分支.这个可以吗?

我工作了一整天,最后我做了一切.所以我需要将我的工作合并到开发分支上,这样我就可以查看开发分支......我的工作立即消失了:(

我知道分离我的HEAD是错误的,Sourcetree警告我......但是有一种方法可以恢复我的工作吗?

非常感谢.

Bri*_*ell 224

如果您键入git reflog,它将显示所HEAD指向的修订的历史记录.你的独立头应该在那里.一旦找到它,做git checkout -b my-new-branch abc123git branch my-new-branch abc123(abc123分离的HEAD的SHA-1 在哪里)创建一个指向分离头的新分支.现在,您可以在闲暇时合并该分支.

一般来说,如果你在分离头上工作后检查一个分支,Git应该告诉你你曾经使用的分离头的提交,所以如果你需要你可以恢复它.我从来没有使用过SourceTree,所以我不知道它是否传递了这条消息.但如果它确实显示了该消息,那么您应该能够使用它来查找提交,并再次使用git checkout -bgit branch从该提交创建分支.

  • 我爱你.谢谢 (44认同)
  • 谢谢布赖恩。你救了我的一天。 (6认同)
  • 另外,如果它是一个刚刚消失的丢失提交,并且您在那里找到了它,则可以使用“gitcherry-pick e5b2f7b”将其恢复,其中“e5b2f7b”是那里提交的 SHA-1。 (4认同)
  • 您节省了我两个月的工作时间。谢谢 (2认同)
  • 作为对所有感谢 Brian 的人的公益广告:如果您正在做不想丢失的工作,请每隔几个小时将其推送到远程(例如 github)。当一颗流星落在你的电脑上时,你会很高兴你这么做了。如果您还没有准备好与协作者共享它,只需将其放在暂时无人知晓的分支中,然后稍后将其重新设置为 master 即可。 (2认同)

bla*_*ond 11

在Sourcetree中,您可以使用GUI执行此操作.

首先通过在命令历史记录中查找消息来查找"丢失"提交(视图:显示命令输出).在您丢失的提交之后,它可能会在命令"Switching Branch"中.在该消息中,希望您将看到带有1234567提交ID的提交注释.

将该提交ID转到下一步.

点击顶部工具栏中的"分支"按钮,您应该会出现一个"新建分支"对话框,您可以在其中指定某个提交.把那个提交ID放在那里,指定一个新的分支名称,点击Create Branch,你应该得到一个新的分支与丢失的提交!

在此输入图像描述


小智 11

  1. 首先,运行git reflog查看历史记录。
  2. 最旧的修订版将是列表中的最后一个修订版。
  3. 切换到您想要的提交,git checkout -b temp e35d2b3这里使用 e35dd23 是您提交的哈希值。
  4. 就是这样。现在只需执行 git add 即可。ETC....

如果它解决了您的问题,请接受它作为答案。否则请分享您的评论。


Des*_*ose 5

如果您不想保留已分离的HEAD的更改,并且想要直接转到最新的分支提交,请直接使用以下命令。

git checkout - 
Run Code Online (Sandbox Code Playgroud)

注意:我将删除分离的HEAD中的所有更改。