2012-02-09 75 views
2

我知道git命令「git branch --contains」可以顯示標籤可以在哪個分支上找到。但輸出包括所有兒童/分支。例如:如何獲得在GIT中創建標籤的特定分支的名稱

master ---------------------------- 
      | \ 
     tag_X \ 
       \ 
        ------------------ branch_A 
        |  \ 
        tag_Y \ 
          \ 
           --------------- branch_B 

當我們運行 「混帳分支--contains tag_X」 我們將得到

branch_A 
branch_B 
master 

雖然tag_X是在主創建,不branch_A和branch_B

是否有任何命令在混帳中只顯示標籤最初創建的特定分支,不包括所有子/分支?如果沒有,有什麼想法如何得到它(從日誌,狀態等分析)? 謝謝!

回答

0

Git不存儲。標籤只是一個指向提交的名稱。如果您查看.git/refs/tags,您將看到一個包含每個標記提交引用的文本文件。

由於幾個分支可以共享相同的提交,所以標籤可以屬於多個分支。也沒有辦法從日誌中獲取,因爲唯一存儲的是相關的提交。

+0

採取

Jarryd,謝謝你的迴應。我發現標籤最初創建的特定分支顯示爲「git branch --contains tag」輸出的第一個分支(在底部)。分支的其餘部分(如果存在)只是繼承相同標記的那個分支的子(ren)。 – 2012-02-13 22:53:14

+0

我不確定這是否適用於所有情況。如果你從一個分支開始,然後做了幾個分支,這是有道理的;你可以想到它沿着提交樹走下來,當它到達提交時,它所在的分支首先被輸出。但是如果你有兩個分支是交錯的,因爲你已經把它們合併成了幾個點呢?我必須嘗試一下。另一件事是在你的例子中,如果你在branch_A上創建了tag_X,它仍然會首先在--contains列表中打印master。 – Jarryd 2012-02-13 23:51:50

0

你怎麼想這

git branch --contains <commit>

不知道這是否與標籤名稱的工作,你可能需要做一個git劇中找相關的哈希從How to list branches that contain a given commit?

+0

奧利維爾,我發現使用相關的散列給出了與使用標記名稱相同的輸出,即不給出特定的分支。但是,謝謝你的迴應! – 2012-02-13 22:53:54