【问题标题】:git: Best way to determine unmerged branches in a scriptgit:确定脚本中未合并分支的最佳方法
【发布时间】:2015-04-17 04:05:51
【问题描述】:

在交互式提示下,我可以使用git branch -r --no-merged 命令来确定尚未合并的远程分支。但是,git branch 是一个瓷器命令,因此不适合在脚本中使用。

有什么好的管道命令可以用来确定--no-merged 选项返回的相同分支吗?

【问题讨论】:

  • This post 有一些关于解析这些信息的建议。也许你可以在那里找到一些东西?

标签: git merge git-branch git-plumbing


【解决方案1】:

我发现命令git merge-base 支持--is-ancestor 参数来检查一个提交是否包含在另一个的历史中。使用它,我可以找到这样的未合并远程引用(在 ksh 中):

function showUnmerged {
    typeset -a unmergedRefs=()

    git for-each-ref --format='%(objectname) %(refname)' refs/remotes | \
    while read -r hash ref; do
        git merge-base --is-ancestor "$hash" "$1" || unmergedRefs+=("$ref")
    done

    echo "${unmergedRefs[@]}"
}

showUnmerged HEAD

这似乎不是特别有效,但它确实有效,据我所知,for-each-refmerge-base 都是管道命令

【讨论】:

    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2012-01-24
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多