2015-12-14 67 views
8

如何知道分支(或提交)是否在SourceTree中合併?Sourcetree:瞭解分支是否合併

使用gitk --all時,它會顯示一個提交(或分支機構)所有其他分支,其中已經合併成。

澄清我的意思是屏幕截圖:包圍(紅色)區域顯示當前提交所屬的所有分支。這可以在SourceTree中顯示嗎?

Screenshot of gitk

+0

所以你知道一個命令行的方式來找到它,但想找到一種方法在Sourcetree中專門做到這一點?我不認爲它有這個功能。 – tom

+0

是的! (好吧,gitk實際上是內置的git gui,但是除了這方面,它似乎比sourcetree更差......) –

回答

7

But maybe it is easier after all to not use SourceTree for that feature

您可以使用SourceTree定義的自定義操作和上市的合併分支機構。
這不像gitk那樣集成,但至少,你不必切換工具。

首先定義一個custom action, using $SHA for getting the selected commit

Custom action

應該調用腳本在%PATH%稱爲git-bm(見this answer as an example

#!/bin/sh 
for branch in $(git for-each-ref --format="%(refname:short)" refs/heads/); do 
    if [ "${branch}" != "$1" ]; then 
    t=$(git for-each-ref --format="%(refname:short)" --merged "${branch}" refs/heads/|grep -v "${branch}"|grep "$1") 
    if [ "${t}" != "" ]; then 
     echo "${branch}" 
    else 
     t=$(git branch --contains "$1" | grep "${branch}") 
     if [ "${t}" != "" ]; then 
     echo "${branch}"  
     fi 
    fi 
    fi 
done 

,將列出所有分支,從中可以訪問當前SHA1(也就是說「當前分支已被合併的所有分支」)

(注意:語法git for-each-ref --merged僅在git 2.7.0中引入 - 2016年1月4日。例如,見 「Is it possible to filter out merged branches in git for-each-ref?」)

然後調用它的承諾,你想:

invoke custom action

而且將讓你分支機構的名單已合併到:

list

這是一個解決方法,但至少你不要離開SourceTree。

+0

不幸的是,我發現這畢竟不行。我想顯示這個分支合併到的所有分支,而不是其他方式。 (例如,如果我將當前分支合併到master中,則使用您的解決方案,它不會在列表中顯示「master」)。 Gitk這樣做是正確的... –

+0

@JanRüegg所以像(僞語法):對於每個分支:(git branch --merged abranch | grep currentBranch)' – VonC

+0

@JanRüegg我編輯了一個應該列出的腳本的答案「這個分支的所有分支都合併成了」。你可以測試它嗎?它在我身邊運作。 – VonC

7

SourceTree運行gitk --all的相當於是選擇在左上角的所有分支從下拉列表中:

View All Branches in SourceTree

該圖顯示了哪些分支機構已合併到哪裏,就像gitk一樣。

然而,找出究竟其分支機構已在當前被合併 - 這是它的祕訣是可達HEAD分支機構 - 更容易通過命令行來完成,你可以簡單地說:

git branch --merged 

如果你願意,你也可以包括遠程分支機構列表通過添加--all選項:

git branch --all --merged 

找出哪些分支機構有當前一個被合併也很簡單:

git branch --no-merged 
+0

感謝您的幫助!我用截圖澄清了這個問題,以顯示我希望在SourceTree中「查找」哪個部分的gitk。但是,也許畢竟不使用sourcetree作爲該功能更容易,正如您所描述的那樣... –

+0

正如在其他答案的評論中所述,這也不起作用!我想知道當前分支已合併到哪個分支,而不是相反! –