如何知道SourceTree中是否合并了分支(或提交)?
当使用时gitk --all
,它将显示提交(或分支)foo所有其他分支,其中foo已经合并到其中.
澄清我的意思是屏幕截图:包围(红色)区域显示当前提交所属的所有分支.这可以在SourceTree中显示吗?
gitk --all
在SourceTree中运行的等价物是从左上角的下拉列表中选择All Branches:
该图表显示哪些分支已合并到哪里,就像gitk
那样.
然而,找出究竟哪些分支已在当前被合并-这是它的秘诀是枝条可达距离HEAD
-更容易在命令行中完成的,因为你可以简单地说:
git branch --merged
如果需要,还可以通过添加选项在列表中包含远程分支--all
:
git branch --all --merged
找出哪些分支已经没有了在当前的合并也很简单:
git branch --no-merged
但也许更容易将SourceTree用于该功能
您可以使用SourceTree中定义的自定义操作并列出这些合并的分支.
这不像gitk那样集成,但至少,你不必切换工具.
首先定义一个自定义操作,$SHA
用于获取所选提交:
它应该在你调用脚本%PATH%
称为git-bm
(见这个答案作为一个例子)
#!/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日.请参阅"例如,是否可以过滤出合并的分支git for-each-ref
? ")
然后在您想要的提交上调用它:
并将获得它已合并到的分支列表:
这是一种解决方法,但至少你不要离开SourceTree.