如何知道分支(或提交)是否在SourceTree中合併?Sourcetree:瞭解分支是否合併
使用gitk --all
時,它會顯示一個提交(或分支機構)富所有其他分支,其中富已經合併成。
澄清我的意思是屏幕截圖:包圍(紅色)區域顯示當前提交所屬的所有分支。這可以在SourceTree中顯示嗎?
如何知道分支(或提交)是否在SourceTree中合併?Sourcetree:瞭解分支是否合併
使用gitk --all
時,它會顯示一個提交(或分支機構)富所有其他分支,其中富已經合併成。
澄清我的意思是屏幕截圖:包圍(紅色)區域顯示當前提交所屬的所有分支。這可以在SourceTree中顯示嗎?
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:
應該調用腳本在%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
?」)
然後調用它的承諾,你想:
而且將讓你分支機構的名單已合併到:
這是一個解決方法,但至少你不要離開SourceTree。
在SourceTree運行gitk --all
的相當於是選擇在左上角的所有分支從下拉列表中:
該圖顯示了哪些分支機構已合併到哪裏,就像gitk
一樣。
然而,找出究竟其分支機構已在當前被合併 - 這是它的祕訣是可達從HEAD
分支機構 - 更容易通過命令行來完成,你可以簡單地說:
git branch --merged
如果你願意,你也可以包括遠程分支機構列表通過添加--all
選項:
git branch --all --merged
找出哪些分支機構有不當前一個被合併也很簡單:
git branch --no-merged
感謝您的幫助!我用截圖澄清了這個問題,以顯示我希望在SourceTree中「查找」哪個部分的gitk。但是,也許畢竟不使用sourcetree作爲該功能更容易,正如您所描述的那樣... –
正如在其他答案的評論中所述,這也不起作用!我想知道當前分支已合併到哪個分支,而不是相反! –
所以你知道一個命令行的方式來找到它,但想找到一種方法在Sourcetree中專門做到這一點?我不認爲它有這個功能。 – tom
是的! (好吧,gitk實際上是內置的git gui,但是除了這方面,它似乎比sourcetree更差......) –