Determine if two Git branches diverged
I would like to determine if the two Git branches diverge or if one of the branches can simply be redirected to another branch.
In other words, I want to check if the current HEAD of one of the branches has been merged with another branch at some point, or if it contains commits that are not on the other branch.
Is there a way to do this without actually merging the two branches? Simple git diff
will not help in this case.
source to share
I am using this script snippet for this purpose:
git_is_merged() {
local revlist
revlist=$(git rev-list -1 "$1" --not "$2")
if [ $? -eq 0 ]; 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'
Use it like gim origin/devel origin/master
to determine if it is merged origin/devel
into origin/master
.
Change: . For the sake of completeness, if you are only working on the specified branches, you can also use
git branch --contains origin/devel | grep -q origin/master && echo "Merged" || echo "Not merged"
or
git branch --merged origin/master | grep -q origin/devel && echo "Merged" || echo "Not merged"
for the same purpose.
source to share