Why is there a `remotes/origin/HEAD -> origin/master` entry in my `git branch -l -a` output?
我不理解输出到git branch -l -a的第二行:remotes/origin/HEAD -> origin/master。
1 2 3 4
| git branch -l -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master |
那是其他操作的残余吗? 我应该清理吗? 我该怎么办?
通常我在cli上使用git,但是在这个本地存储库中,我尝试使用TortoiseGit为朋友找到一个简单的git工作流程。
-
运行" git branch -r"时为什么显示" origin / HEAD"的可能重复项?
-
顺便说一句,-l可能无法满足您的要求。 通常,它创建reflog,但在这里可能只是省略了。 对于列出所有分支,git branch -a就足够了。
-
@ColinDBennett号
不,不需要清理:这是远程仓库所引用的符号分支。
克隆存储库时,默认情况下,您将位于remotes/origin/HEAD引用的分支上。
也可以看看:
-
" Git:在裸仓库中更改Active Branch的正确方法吗?"
-
"如何更改Git远程HEAD以指向除" master"之外的其他内容"
-
" origin/HEAD如何设置?"
注意:您需要使用git branch --list(或git branch),而不是git branch -l。
-
简明扼要的答案和链接。我猜我很困惑,因为我将这个测试仓库与另一个没有remotes / origin / HEAD参考的仓库进行了比较。另一个回购是我推送到github的原始回购,因此从未被克隆。它(未克隆)是否不包含HEAD引用的原因是否正确?
-
@mistaecko是的,这是正确的。
-
如果确实要删除它:git remote set-head origin -d,每个stackoverflow.com/a/6838756。
-
第二分支和第三分支有什么区别?
-
@Goldname第二个分支不是分支,而是指向分支的符号指针(HEAD)。它引用了克隆远程存储库时将签出的默认分支。
-
@VonC好吧,第二行告诉您指向分支的指针以及分支的含义,对吗?第三行列出了分支
-
@Goldname是,指针(在remotes名称空间中)然后分支(在remotes命名空间中):它们是从名为origin的远程存储库中最后获取的内容的副本。
-
@VonC谢谢,但是我变得更加困惑。"上次获取的内容的副本"与获取有关的分支列表如何?
-
@Goldname因为分支是指向最新提交的指针,所以它本身引用了过去提交的历史记录。无论何时获取,都将获取所有新提交,并将remotes / origin / master更新为这些新提交中的最新提交。要了解有关分支的更多信息:stackoverflow.com/a/51224861/6309,有关获取:stackoverflow.com/a/28341622/6309,stackoverflow.com/a/23530333/6309
您可以使用git remote set-head origin -d删除origin/HEAD符号引用,或使用git remote set-head origin -a查询遥控器并自动将origin/HEAD指针设置为遥控器的当前分支。
origin/HEAD参考是可选的。 它仅充当语法快捷方式:如果存在并指向origin/master,则可以仅使用特定的origin,否则将指定origin/master。
git remote(1)手册页对此进行了描述:
set-head
Sets or deletes the default branch (i.e. the target of the
symbolic-ref refs/remotes//HEAD) for the named remote. Having a
default branch for a remote is not required, but allows the name of
the remote to be specified in lieu of a specific branch. For example,
if the default branch for origin is set to master, then origin may be
specified wherever you would normally specify origin/master.
-
是否可以调用git branch -l -a或类似名称,并过滤出HEAD和其他符号引用?
-
您可以使用git branch --list -a | grep -v ->
-
可以,但是这种破解是非常不可靠的。如何知道所有"例外" ...