2012-09-27 185 views
41

我不明白輸出到git branch -l -a的第二行:remotes/origin/HEAD -> origin/master爲什麼我的`git branch -l -a`輸出中有`remotes/origin/HEAD - > origin/master`項?

git branch -l -a 
* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

這是來自另一個操作的剩餘物嗎?我應該清理它嗎?我該怎麼做?

通常我在cli上使用git,但在本地存儲庫中,我嘗試使用TortoiseGit來爲朋友找到一個簡單的git工作流程。

+1

可能重複[爲什麼在運行「git branch -r」時顯示「origin/HEAD」?](http://stackoverflow.com/questions/354312/why-is-origin-head-shown- when-running-git-branch-r) –

+0

順便說一句,'-l'可能不會做你想做的。通常,[它會創建reflog](https://git-scm.com/docs/git-branch#git-branch--l),但這裏可能只是省略了。要列出所有分支,'git branch -a'就足夠了。 – Palec

回答

28

不,不需要清理:它是您的遠程回購引用的符號分支。
當您克隆您的回購時,您將默認在remotes/origin/HEAD所引用的分支上。

參見:

+1

Thx爲簡潔的答案和鏈接。我想我很困惑,因爲我將這個測試回購與另一個沒有remotes/origin/HEAD參考的測試回購進行了比較。 那個其他回購是我推到github的原始回購,因此從未被克隆過。這是否正確(未被克隆)是因爲它不包含HEAD引用? – mistaecko

+1

@mistaecko是的,它是正確的。 – VonC

+4

如果你想刪除它:'git remote set-head origin -d',根據http://stackoverflow.com/a/6838756。 –

21

您可以使用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)手冊頁描述了這一點:

組頭

設置或刪除默認分公司( 象徵-REF參/遙控器// HEAD的即目標)的命名遠程。有一個 默認的遠程分支不是必需的,但允許指定遠程名稱 代替特定的分支。例如, 如果默認分支的原點設置爲主,則原點可能爲 ,無論您通常指定原點/主點。

+0

是否可以調用'git branch -l -a'或類似的函數,並過濾掉HEAD和其他符號引用? –

+0

你可以使用'git branch --list -a | grep -v' - >' –

+0

肯定,但是這個黑客非常不可靠。如何知道所有「例外」... –

相關問題