2009-11-07 73 views
112

我是新来的Git,我似乎如果我执行下面的命令一个分支太多:警告:refname“HEAD”是不明确的

warning: refname 'HEAD' is ambiguous. 

我得到以下输出:

warning: refname 'HEAD' is ambiguous. 
From github.com:dagda1/hornget 
* branch   master  -> FETCH_HEAD 
warning: refname 'HEAD' is ambiguous. 
warning: refname 'HEAD' is ambiguous. 

如果我执行git branch -a

我得到如下:

HEAD 
* master 
remotes/emmekappa/master 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

我很困惑remotes/origin/HEAD -> origin/master

这是什么,我该如何摆脱暧昧分公司。

我通过执行合并,我想我加入了暧昧分支得到了这个阶段。

+9

您尝试执行的第一个命令是什么?当然这不是'警告:refname'HEAD'是模棱两可的。' – 2009-11-07 12:41:22

+0

'遥控器/ origin/HEAD - > origin/master'不是问题:它只显示哪个分支是远程'origin'的默认分支。名为**'HEAD' **的分支是。 – 2009-11-07 16:19:04

+3

我认为你需要编辑这个问题来显示你试图执行的命令:) – Kris 2010-08-17 09:52:12

回答

186

问题是你有一个叫HEAD的分支,这是绝对危险的,因为这是任何分支的符号名称,即当前分支。

其重命名为:

git branch -m HEAD newbranch 

,那么你可以检查一下,再决定做什么(它删除,或者在一个描述性的分支名称保存)

(该origin/HEAD远程分支是没有问题的)

+0

如果碰巧有一个文件或目录与分支名称相同,也会发生这种情况。 – 2011-06-14 11:55:50

+2

尽管'origin/HEAD'可能不会成为问题,但是如果您不小心创建了一个名为'origin/somebranch'的分支,这是一个问题(并且会导致相同的“模糊”错误消息)。当你尝试从“somebranch”拉出时,你会从当地(意外的)分支而不是遥控器拉出来。在那种情况下,我发现flickerfly的'git branch -d origin/somebranch'的建议很好。 – machineghost 2012-10-25 00:46:53

+0

修复它,谢谢。值得注意的是,“HEAD”分支是自动创建的,而不是由我自己创建的。它包含一个单独的合并提交,我无法使用reflog恢复到干净的状态。所以,我重新命名了分支,删除了它,将我的“一前一后”本地主人重新命名为origin/master,推送时没有问题 – 2015-02-10 07:51:24

29

此外,这将删除分支,如果你只是不希望它。

git branch -d HEAD 

使用大写字母-D进行强制删除:

git branch -D HEAD 
+3

但它仍然保持模糊,是否有办法清除它? – RzR 2011-04-05 14:58:28

+1

这不起作用。你必须先重命名。 – 2014-04-11 19:45:49

19

如果您已经创建了一个使用命名HEAD标签...

git tag HEAD 

...你可以删除使用标签:

git tag -d HEAD 

看到这个情况:kerneltrap.org/git-tag HEAD

1

这意味着你有一个名为“头”分支。我遇到了同样的问题,我通过执行以下命令来解决问题。

git branch -d head 
-3

检查您的git存储库中可用的参考。你会在你的仓库中观察到两个HEAD。这使得您的分支与refname HEAD不明确。

git show-ref 

解决方案:

  • 重命名分支

    git branch -m HEAD <new_branch_name> 
    

    OR

  • 删除分支

    git branch -d HEAD