我的一个同事遇到了这种情况。在他的情况下,提交是在分离的头部进行的--他们使用R-Studio--工具确实警告他们可以使用此和那个SHA参考创建分支...但由于唯一的选项是“关闭”--呃!它是一个信息框--他们关闭了对话框并永远失去了信息...感谢
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。将其合并到 develop 分支是快进的。