9

我如何知道分支(或提交)是否合并到 SourceTree 中?

使用时gitk --all,它将显示提交(或分支)foo所有其他分支,其中foo已合并到其中。

为了澄清我的意思是截图:圈出的(红色)区域显示了当前提交所属的所有分支。这也可以显示在 SourceTree 中吗?

gitk截图

4

2 回答 2

10

gitk --allSourceTree中运行的等价物是从左上角的下拉列表中选择All Branches :

查看 SourceTree 中的所有分支

该图显示了哪些分支已合并到哪里,就像这样gitk做一样。

但是,从命令行更容易地找出当前分支中已合并的分支——即可以从其提示到达HEAD分支——更容易从命令行完成,您可以简单地说:

git branch --merged

如果需要,您还可以通过添加选项在列表中包含远程分支:--all

git branch --all --merged

找出当前分支中没有合并的分支同样简单:

git branch --no-merged
于 2015-12-21T21:11:08.993 回答
8

但也许不将 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。

于 2015-12-22T10:18:02.470 回答