git:确定脚本中未合并分支的最佳方式
git: Best way to determine unmerged branches in a script
在交互式提示下,我可以使用 git branch -r --no-merged
命令来确定尚未合并的远程分支。但是,git branch
是瓷器命令,因此不适合在脚本中使用。
是否有任何好的管道命令可用于确定 --no-merged
选项返回的相同分支?
我发现命令 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" "" || unmergedRefs+=("$ref")
done
echo "${unmergedRefs[@]}"
}
showUnmerged HEAD
这似乎不是特别有效,但它确实有效,据我所知,for-each-ref
和 merge-base
都是管道命令
在交互式提示下,我可以使用 git branch -r --no-merged
命令来确定尚未合并的远程分支。但是,git branch
是瓷器命令,因此不适合在脚本中使用。
是否有任何好的管道命令可用于确定 --no-merged
选项返回的相同分支?
我发现命令 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" "" || unmergedRefs+=("$ref")
done
echo "${unmergedRefs[@]}"
}
showUnmerged HEAD
这似乎不是特别有效,但它确实有效,据我所知,for-each-ref
和 merge-base
都是管道命令