我的一位同事遇到了这种情况。在他的案例中,有分离的头部提交(他们在R-Studio中工作),并且该工具确实警告他们可以使用该引用和SHA引用创建分支……但是由于唯一的选择是“ Close” --du!这是一个信息框-他们关闭了对话,并永远丢失了信息...
借助reflog命令,我们可以看到所做的更改没有丢失。但是在我们的情况下,git branch不能按预期工作...或传入git pull确实以某种方式使其混乱。我们必须将更改从reflog转移到新创建的分支:
git cherry-pick 0b823d42..3cce27fc
它将所有我们想要的提交放置在分支中。然后,我们可以将分支合并到develop没有问题的地方。
以防万一,这对任何人都有用,我们通过查看标记为“ checkout”(标识分支转移)之间的提交,确实确定了分离头中的提交reflog:
e09f183b HEAD@{3}: pull: Fast-forward
b5bf3e1d HEAD@{4}: checkout: moving from lost_changes to develop
b5bf3e1d HEAD@{5}: checkout: moving from 3cce27fca50177a288df0252f02edd5da5ee64fd to lost_changes
3cce27fc HEAD@{6}: commit: add statistics
417a99a4 HEAD@{7}: commit: add test
0b823d42 HEAD@{8}: commit: new utility class
d9ea8a63 HEAD@{9}: checkout: moving from develop to d9ea8a635d4c2349fcb05b3339a6d7fad5ae2a09
b5bf3e1d HEAD@{10}: pull: Fast-forward
那些我们需要做的是HEAD@{8}对HEAD@{6}(包括两端)。因此,我们通过以下方式获得它们:
git cherry-pick 0b823d42..3cce27fc
然后,通常的合并解决方案和最终提交给我们留下了Lost_changes分支,托管我们认为丢失的独立工作。这次,将其合并为开发是快速的。