2009-11-07 67 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