我想确定两个git分支是否已经分离,或者其中一个分支是否可以快速转发到另一个分支。
换句话说,我想检查一个分支的当前头是否在某个点合并到另一个分支中,或者它是否包含不在另一个分支中的提交。
有没有办法在不合并这两个分支的情况下做到这一点?简单的git diff在这种情况下没有帮助。

最佳答案

为此,我使用了这个shell脚本片段:

git_is_merged () {
    local revlist
    if revlist=$(git rev-list -1 "$1" --not "$2"); then
        if [ "$revlist" = "" ]; then
            echo "'$1' IS merged into '$2'."
        else
            echo "'$1' is NOT merged into '$2'."
        fi
    fi
}

alias gim='git_is_merged'

gim origin/devel origin/master一样使用它来确定origin/devel是否合并到origin/master中。
编辑:为了完整起见,如果只使用命名分支,还可以使用
git branch --contains origin/devel | grep -q origin/master && echo "Merged" || echo "Not merged"


git branch --merged origin/master | grep -q origin/devel && echo "Merged" || echo "Not merged"

为了同样的目的。

08-27 10:50