如何知道SourceTree中是否合并了分支(或提交)?
使用gitk --all
时,它将显示提交(或分支) foo 所有其他分支,其中 foo 已合并到其中。
澄清我的意思是屏幕截图:包围(红色)区域显示当前提交所属的所有分支。它也可以在SourceTree中显示吗?
答案 0 :(得分:8)
相当于在SourceTree中运行gitk --all
,就是从左上角的下拉列表中选择所有分支:
图表显示哪些分支已合并到哪里,就像gitk
那样。
然而,找出完全哪些分支已合并到当前的分支 - 即HEAD
中提示可到达的分支 - 更容易从命令行完成,你可以简单地说:
git branch --merged
如果需要,您还可以通过添加--all
选项在列表中添加远程分支:
git branch --all --merged
找出哪些分支不已合并到当前分支中同样容易:
git branch --no-merged
答案 1 :(得分:7)
但也许更容易将SourceTree用于该功能
您可以使用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
仅在2016年1月4日在git 2.7.0中引入。例如,参见“Is it possible to filter out merged branches in git for-each-ref
?”)
然后在您想要的提交上调用它:
并且会获得它已合并到的分支列表:
这是一种解决方法,但至少你不要离开SourceTree。