Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们的git存储库有一个名为HEAD的分支_Git_Git Branch - Fatal编程技术网

我们的git存储库有一个名为HEAD的分支

我们的git存储库有一个名为HEAD的分支,git,git-branch,Git,Git Branch,我最近注意到我们的git服务器有一个叫做HEAD的分支。我在本地尝试过这样做,git警告我这是不明确的。删除/重命名此分支是否会遇到任何潜在的可怕问题?您的服务器应该有一个名为HEAD的分支指针,它将指向您的默认分支。默认情况下,git branch-r将显示以下内容: origin/HEAD -> origin/master 裸回购有“头”是正常的。请记住,HEAD不是一个普通的分支,而是一个指向分支的指针 对于非裸体,“头”的“分支”指向“头” 对于裸回购,它指向默认分支,即当裸回购

我最近注意到我们的git服务器有一个叫做HEAD的分支。我在本地尝试过这样做,git警告我这是不明确的。删除/重命名此分支是否会遇到任何潜在的可怕问题?

您的服务器应该有一个名为
HEAD
的分支指针,它将指向您的默认分支。默认情况下,
git branch-r
将显示以下内容:

origin/HEAD -> origin/master

裸回购有“头”是正常的。请记住,HEAD不是一个普通的分支,而是一个指向分支的指针

  • 对于非裸体,“头”的“分支”指向“头”
  • 对于裸回购,它指向默认分支,即当裸回购被克隆到非裸回购时,作为工作目录签出的分支。它通常指向“大师”,但你可以

  • 可以创建一个名为
    HEAD
    的远程分支,而且似乎不会特别有害:

    ~/code/foo/bar (master) $ git push origin master:HEAD
    Total 0 (delta 0), reused 0 (delta 0)
    To git@github.com:foo/bar
     * [new branch]      master -> HEAD
    ~/code/foo/bar (master) $ git branch -a
    * master
      remotes/origin/HEAD
      remotes/origin/master
    ~/code/foo/bar (master) $ git push origin :HEAD
    To git@github.com:foo/bar
     - [deleted]         HEAD
    ~/code/foo/bar (master) $ git branch -a
    * master
      remotes/origin/master
    
    创建名为
    HEAD
    的本地分支会产生更糟糕的效果:

    ~/code/foo/bar (master) $ git checkout -b HEAD
    Switched to a new branch 'HEAD'
    Your branch is up-to-date with 'origin/master'.
    ~/code/foo/bar (HEAD) $ git checkout -b fubar
    warning: refname 'HEAD' is ambiguous.
    fatal: Ambiguous object name: 'HEAD'.
    ~/code/foo/bar (HEAD) $ git branch -a
    * HEAD
      master
      remotes/origin/master
    ~/code/foo/bar (HEAD) $ rm .git/refs/heads/HEAD
    ~/code/foo/bar (HEAD*) $ git checkout master
    Switched to branch 'master'
    
    所有这些都是通过OS X上的自制程序安装的git 2.3.0版

    很容易意外地键入上述许多调用,不幸的是,当在特殊含义不适用的地方指定了
    HEAD
    (或
    FETCH\u HEAD
    )时,Git不会快速失败。编辑:较新版本的Git现在使用
    HEAD
    会快速失败。例如,对于git版本2.22.0:

    ~/code/foo/bar (master) $ git checkout -b HEAD
    fatal: 'HEAD' is not a valid branch name.
    

    但是仍然允许使用名为
    FETCH\u HEAD
    的分支。

    你应该问创建分支的人:)那个人已经离开很久了:(分支上没有什么特别的东西(甚至在同一点上还有另一个分支!)我只是想知道,如果我尝试删除HEAD,GIT是否会发作。注意:在GIT 2.16中,名为HEAD的分支将不再可能(至少,您将无法创建新分支)。请看,这个答案并不能解释将分支称为“HEAD”可能产生的任何可怕后果这是因为这个答案假设没有人做过这样的事情,OP误解了
    git branch-r
    @meagar的输出,我误解了输出。但是,可以创建一个名为head的分支,但不确定它有多危险。将分支称为“head”只要你不在Windows上就可以了。如果你在Windows上,那么你就注定要失败。我不想知道当你试图让分支末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,末日,最后在Windoom上末日。这个答案目前建议
    rm.git/refs/heads/heads;git co-b fubar
    。如果您一个接一个地执行这些命令,
    fubar
    将被创建,而您的工作目录仍处于与现在已删除的分支-
    HEAD
    相对应的状态,并且没有历史记录,这几乎肯定没有意义。我认为这个答案应该建议
    rm.git/refs/heads/HEAD;git checkout master
    作为回到坚实基础的一种方式,@Quuxplusone很公平;我相应地改变了它。我还添加了一个关于git新版本的注释,它不再允许创建名为HEAD的本地分支。