分离头指针(detached HEAD)
通常,我们工作在某一个分支上,比如 master 分支。这个时候 master 指针和 HEAD 指针是一起前进的,每做一次提交,这两个指针就会一起向前挪一步。但是在某种情况下(例如 checkout 了某个具体的 commit),master 指针 和 HEAD 指针这种「绑定」的状态就被打破了,变成了分离头指针状态。我那天遇到的情况是,master 和 HEAD 指针看上去指在同一个 commit 上,但其实已经处在分离头指针状态。当我在此时又做了一次新的提交时,HEAD 指针跑到 master 指针前面去了。如果我直接检出 master 分支,HEAD 指针就会回退一格到 master 指针的位置,而最新的那次提交就变成了孤立的提交,没有任何分支能追踪到它,刚才的活白干了。
分离后操作:
一:打开项目所在物理目录,删除目录下的.git文件下的最长的一个base啥的子文件夹
二:在VS里的GIT更改,右边的三个点,点击,选择在命令提示符中打开
按步骤运行下面两句命令
-
# 强制将 master 分支指向当前头指针的位置
-
$ git branch -f master HEAD
-
# 检出 master 分支
-
$ git checkout master
避免提交时候分离,按以下步骤,(仅供参考,不一定适合所有人)
一:先提交到本地仓库
二:在右下角的分支选择,远程分支上右击合并到当前
三:再推送或拉取