Sourcetree:查看一个分支是否被合并
Sourcetree: Find out if a branch is merged
我如何知道分支(或提交)是否已合并到 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
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
的脚本(参见 )
#!/bin/sh
for branch in $(git for-each-ref --format="%(refname:short)" refs/heads/); do
if [ "${branch}" != "" ]; then
t=$(git for-each-ref --format="%(refname:short)" --merged "${branch}" refs/heads/|grep -v "${branch}"|grep "")
if [ "${t}" != "" ]; then
echo "${branch}"
else
t=$(git branch --contains "" | grep "${branch}")
if [ "${t}" != "" ]; then
echo "${branch}"
fi
fi
fi
done
这将列出您可以访问当前 SHA1 的所有分支(也就是说 "all branches in which the current branch has been merged")
(注意:语法 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
时,它将显示提交(或分支)foo 所有其他分支,其中 foo已经合并到.
为了阐明我的意思截图:圆圈(红色)区域显示了当前提交所属的所有分支。这也可以显示在 SourceTree 中吗?
运行 gitk --all
在 SourceTree 中的等价物是从左上角的下拉列表中选择 All Branches角落:
该图显示了哪些分支已在何处合并,就像 gitk
所做的那样。
然而,找出确切哪些分支已合并到当前分支中——即提示可达的分支来自HEAD
– 从命令行更容易完成,您可以简单地说:
git branch --merged
如果需要,您还可以通过添加 --all
选项将 远程分支 包含在列表中:
git branch --all --merged
找出哪些分支没有被合并到当前分支中同样简单:
git branch --no-merged
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
的脚本(参见
#!/bin/sh
for branch in $(git for-each-ref --format="%(refname:short)" refs/heads/); do
if [ "${branch}" != "" ]; then
t=$(git for-each-ref --format="%(refname:short)" --merged "${branch}" refs/heads/|grep -v "${branch}"|grep "")
if [ "${t}" != "" ]; then
echo "${branch}"
else
t=$(git branch --contains "" | grep "${branch}")
if [ "${t}" != "" ]; then
echo "${branch}"
fi
fi
fi
done
这将列出您可以访问当前 SHA1 的所有分支(也就是说 "all branches in which the current branch has been merged")
(注意:语法 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。