当你运行git branch -r
为什么火焰会列出origin/HEAD
?例如,GitHub上有一个远程仓库,比如说有两个分支:master和awesome-feature.如果我git clone
抓住它然后进入我的新目录并列出分支,我看到:
$ git branch -r origin/HEAD origin/master origin/awesome-feature
或者它的任何顺序(阿尔法?我正在伪造这个例子以保持无辜的回购秘密的身份).那么HEAD
业务是什么?它是什么,最后一个人push
有他们HEAD
在尖时,他们推?这不会是他们push
编辑的一切吗?HEAD
四处走动......为什么我会关心别人HEAD
在另一台机器上指出的东西?
我只是处理远程跟踪等问题,所以这是一个挥之不去的混乱.谢谢!
编辑:我的印象是专用的远程回购(比如GitHub,没有人会在这个代码上工作,但只有拉或推等)没有也不应该有HEAD,因为基本上,没有工作副本.不是吗?
@robinst是对的.
在git中,您可以选择默认签出的分支(即克隆时).默认情况下,origin/HEAD
将指向该.
在GitHub上,您可以在GitHub仓库的管理员设置中更改此设置.您也可以从命令行通过
git remote set-head origin trunk
或通过完全删除它
git remote set-head origin -d
例子.查看"切换分支"下拉列表.trunk
检查,origin/HEAD
如下trunk
.
The reason a bare repository can have a HEAD, is that because it determines which branch is initially checked out after a clone of the repository.
Normally, HEAD points to master, and that is the branch that is checked out when people clone the repository. Setting it to another branch (by editing HEAD in the bare repository) results in that branch being checked out on clone.
我的印象是专用的远程回购(比如GitHub,没有人会在这个代码上工作,但只有拉或推等)没有也不应该有一个HEAD,因为基本上没有工作复制.不是吗?
我和你说的有完全相同的印象.
我甚至无法删除从github克隆的源/ HEAD远程跟踪分支
git branch -d -r origin/HEAD
这没有效果.
有人可以告诉我如何删除该origin/HEAD远程跟踪分支?
虽然我没有找到为什么在从github克隆时创建了一个origin/HEAD,但我找到了一种方法来删除它.
新版本的git提供
git remote set-head-d
删除远程跟踪分支的无用HEAD指针.
我们还可以通过使用将哑巴默认名称"origin"更改为我们想要的任何内容
git remote rename origin
希望这可以提供帮助.:)
你是正确的,当他们"裸露"时,即当他们没有工作目录时,推动专用远程回购工作会更好.Git的体系结构设计用于通过补丁或pull
(fetch
)进行更新,这在分布式VCS中是有意义的.正如文档所说的那样,推向目前已检出的分支可能会导致"意外结果".
HEAD是有效存储库要求的一部分.Git Repository Layout部分说:
HEAD A symref (see glossary) to the refs/heads/ namespace describing the currently active branch. It does not mean much if the repository is not associated with any working tree (i.e. a bare repository), but a valid git repository must have the HEAD file; some porcelains may use it to guess the designated "default" branch of the repository (usually master). It is legal if the named branch name does not (yet) exist.
因此,您将看到HEAD作为分支列表的一部分,即使"它并不意味着......"