这种情况是怎么发生的,我不知道。总的来说,我工作了,在本地做了一些提交,一切都很好。我决定将其发送到服务器,
> git push origin
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push origin HEAD:<name-of-remote-branch>
它是什么<name-of-remote-branch>——只有 git 知道......
我看一下状态:
> git status
HEAD detached from origin/master
Untracked files:
(use "git add <file>..." to include in what will be committed)
VCRelease64/
nothing added to commit but untracked files present (use "git add" to track)
好吧,未跟踪的文件我根本不感兴趣。
我在互联网上搜索 - 建议是“do git checkout origin/master”。很好的是,我完全保存了所有内容,以防万一 - 我扔掉了最后两次提交,然后……好吧,没有剩下的了。已恢复。
在 gitk 中,如图所示。
问:需要做什么才能恢复正常并且不丢失任何东西?作为一种选择,我已经在考虑 - 尝试再次从服务器中提取所有内容,作为一个新项目,将更改重写到其中并工作,但不知怎的,它不公平:)
我不确定有必要解释一下 git 是如何工作的——我还是完全不明白,无论我读了多少,如果当局没有要求,我也不会费心。所以这很简单——如何在这种情况下驾驶,用两个词解释为什么会这样(突然间我就明白了)。据我了解,我不需要将 HEAD 附加到某处,但我需要将 origin/master 附加到它,不是吗?
PS 总是git commit足够的git push:)

当前状态(
HEAD指向提交的指针,又名分离头)显然是因为checkout提交 ID 是在新提交之前创建的。因此,在新提交之后,指针master没有移动。git branch -f master && git checkout master会将指针移动master到当前提交,然后将指针移动HEAD到主指针。