今天早晨,我们从回购中撤出,而git将我们放在(没有分支)上。

我不明白,为什么会这样?以及如何摆脱它而不丢失我们的更改?

最佳答案

“当前不在任何分支上”表示您有一个detached head,即您的HEAD指针直接引用了提交,而不是用符号指向分支的名称。

您可以通过 check out SHA1的提交,或者在进行重新设置的中间,或者合并失败时,进入这种情况。很难说出您是如何偶然进入这种情况的。

据说当您从独立的HEAD切换到某个分支时,您可能会丢失所做的更改,但是reflog将始终跟踪HEAD移动的位置。实际上,当从分离的HEAD切换时,Git 1.7.5会警告您,并且会丢失提交。唯一真正丢失工作的时间是您未提交的更改,您可能要提交或隐藏它们。

查看更详细列表的一种简单方法是git refloggit log -g --decorate--decorate选项将使用指向它的所有分支的名称来标记每个SHA1。如果您当前HEAD的SHA1与master完全相同,则您无需做任何其他操作,就可以通过git checkout master恢复正常。否则,请查看SHA1是否由其他分支指向。如果没有,您可能希望创建一个分支以使其挂起。

另一个好命令是git branch -av,它将类似地列出所有分支及其指向的对象,因此您可以看到(no branch)的实际含义。

09-04 04:56
查看更多