当前位置:  开发笔记 > 开发工具 > 正文

Sourcetree:找出是否合并了分支

如何解决《Sourcetree:找出是否合并了分支》经验,为你挑选了2个好方法。

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

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

澄清我的意思是屏幕截图:包围(红色)区域显示当前提交所属的所有分支.这可以在SourceTree中显示吗?

gitk的屏幕截图



1> Enrico Campi..:

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

查看SourceTree中的所有分支

该图表显示哪些分支已合并到哪里,就像gitk那样.

然而,找出究竟哪些分支已在当前被合并-这是它的秘诀是枝条可达距离HEAD-更容易在命令行中完成的,因为你可以简单地说:

git branch --merged

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

git branch --all --merged

找出哪些分支已经没有了在当前的合并也很简单:

git branch --no-merged



2> VonC..:

但也许更容易将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.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有