2012-01-26 25 views
2

我們在構建我們的Maven工件時存儲當前結賬的SHA-1,所以我們可以返回使用「git checkout SHA-1」製作工件的確切提交。這導致分離的HEAD不屬於任何分支。如何識別給定SHA-1「屬於」哪個遠程分支?

我可以使用「gitk --all」。以可視化方式標識提交所屬的遠程分支,但我想知道相應的git命令來確定當前提交「屬於」哪個分支(編輯:因爲可能在分支上修復了其他錯誤因爲這個特殊的構建)。

+0

爲什麼你想知道它屬於哪個* remote *分支?本地分支是否足夠? – CharlesB

+0

所有開發都發生在一個分支上。這是爲了確保選擇正確的分支進行bug修復。 –

回答

6
$ git branch -r --contains <SHA-1> 

這可能會給你多個分支,並且不會告訴你哪個是最「最近的」。

+0

這將創建一個名爲'-r'的分支,開始於'' – CharlesB

+1

@CharlesB:不,這個工作正常 - 它顯示所有包含''的遠程跟蹤分支.... –

+0

@MarkLongair:不適用於我,必須是我的配置上的錯誤(Mac OS X Lion上的Git 1.7.8),我一直得到'-r'分支。當編輯帖子(當前投票被鎖定)時,將刪除我的downvote – CharlesB

1

git help branch

隨着--contains,僅示出了包含名爲提交 分支(換句話說,其尖端是提交的名爲 後代提交分支)。使用--merged時,只會列出合併到指定提交中的分支(即其提示 可從指定提交中獲得的分支)。使用--no-merged只分支未合併到指定的提交將被列出 。如果缺少參數,則默認爲HEAD(即當前分支的尖端)。

所以我猜你正在尋找git branch --contains SHA-1

要列出遠程分支,首先需要獲取所有遠程分支,然後再給-r選項上面的命令。

git fetch 
git branch -r --contains SHA-1 
+0

這不會列出遠程分支 – CharlesB

+0

更新了答案 – Sailesh

相關問題