1

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

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

4

1 回答 1

3

我发现该命令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-ref都是merge-base管道命令

于 2015-02-26T14:44:46.873 回答