如何知道分支(或提交)是否在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更差......) –