关于git branch输出中仅origin仓库显示HEAD指针的技术咨询
关于Git远程HEAD指针的疑惑解答
嘿,我来帮你理清这个HEAD指针的问题,顺便给你讲讲合并分支的实操步骤~
为什么只有origin显示HEAD标签?
先拆解不同场景下HEAD的含义:
- 本地仓库的HEAD:其实你的本地仓库是有HEAD的!只是
git branch -a的输出里,本地分支前面的*就代表当前HEAD指向的分支(比如你现在在my-branch的话,会显示* my-branch),不会单独列一条HEAD记录。 - 远程仓库的HEAD:远程仓库的HEAD本质是标记它的默认分支(比如origin的默认分支是master,所以显示
remotes/origin/HEAD -> origin/master)。- 你克隆
origin的时候,Git会自动同步它的默认分支信息,所以本地会记录下origin/HEAD指针。 - 而
NILMTKtoENERGYTK是你后来手动添加的远程仓库,默认情况下Git不会主动同步它的默认分支信息,所以git branch -a里看不到它的HEAD记录。
- 你克隆
这个情况会有什么影响?
其实对你要做的「合并NILMTKtoENERGYTK的变更到my-branch」这件事几乎没有影响:
- 远程HEAD只是个快捷方式,比如
git pull origin默认会拉取origin/HEAD指向的分支;但对于NILMTKtoENERGYTK,你只要明确指定分支名就行,完全不影响拉取或合并操作。 - 唯一的小区别是,没有远程HEAD的话,你没法用
git pull NILMTKtoENERGYTK这种省略分支名的命令,必须写全比如git pull NILMTKtoENERGYTK/master。
如何合并NILMTKtoENERGYTK的变更到my-branch?
给你一套标准操作步骤:
- 先拉取
NILMTKtoENERGYTK的最新代码到本地:git fetch NILMTKtoENERGYTK - 切换到你的本地
my-branch分支:git checkout my-branch - 合并
NILMTKtoENERGYTK的目标分支(假设它的变更在master分支,你可以换成实际分支名):git merge NILMTKtoENERGYTK/master- 如果出现冲突,打开冲突文件手动解决,然后用
git add <冲突文件>标记冲突已解决,最后git commit完成合并。
- 如果出现冲突,打开冲突文件手动解决,然后用
可选:让NILMTKtoENERGYTK也显示HEAD标签
如果你想让git branch -a里也显示NILMTKtoENERGYTK的HEAD,只需要执行这条命令,Git会自动获取它的默认分支并设置本地的远程HEAD指针:
git remote set-head NILMTKtoENERGYTK -a
内容的提问来源于stack exchange,提问作者BaluJr.
相关产品推荐
相关产品推荐

