确定两个Git分支是否有分歧

问题描述 投票:3回答:4

我想确定两个Git分支是否已经分歧,或者其中一个分支是否可以简单地快速转发到另一个分支。

换句话说,我想检查其中一个分支的当前HEAD是否已经在某个时刻合并到另一个分支中,或者它是否包含不在另一个分支中的提交。

有没有办法在没有实际合并两个分支的情况下做到这一点?在这种情况下,简单的git diff无济于事。

git branch
4个回答
2
投票

我正在使用此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"

出于同样的目的。


5
投票

你可以使用git merge-base

可以找到here的描述。


4
投票

如果它可以简单地快进,git merge --ff-only otherbranch将成功。 (如果不能,它将被拒绝而不是合并提交。)


0
投票

如果你想要一个图形工具,你可以使用gitk branch1 branch2。如果需要,这还允许您检查不同的提交。

© www.soinside.com 2019 - 2024. All rights reserved.