找到未合并的Git分支?

我有一个带有许多分支的Git存储库,其中一些已经合并,一些还没有合并。由于分支的数量相当大,我如何确定哪些分支尚未合并?我希望避免不得不进行“章鱼式”合并和重新合并已经合并的分支。

80759 次浏览

试试这个:

git branch --merged master

它做它在锡上说的(列出已合并到master的分支)。你也可以用:

git branch --no-merged master

如果你没有指定master,例如…

git branch --merged

然后它会显示已经合并到当前HEAD的分支(所以如果你在master上,它相当于第一个命令;如果你在foo,它等价于git branch --merged foo)。

你也可以通过指定-r标志和要检查的引用来比较上游分支,可以是本地的,也可以是远程的:

git branch -r --no-merged origin/master

如果一个分支已经被合并,那么再次合并它不会有任何作用。所以你不必担心“重新合并”已经合并的分支。

要回答您的问题,您可以简单地发出

 git branch --merged

查看合并的分支或

 git branch --no-merged

查看未合并的分支。您当前的分支是隐含的,但如果您愿意,您可以指定其他分支。

 git branch --no-merged integration

将显示尚未合并到integration分支的分支。

你也可以使用-r参数来显示未合并到主分支的远程分支:

git branch -r --merged master


git branch -r --no-merged


                         

下面的脚本将找到当前分支之前的所有origin/*分支

#!/bin/bash


CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)


echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m"
echo ''


git branch -a | grep remotes/origin/ | while read LINE
do
CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}"


if $CMD | grep ' file' > /dev/null; then
echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///'
$CMD
echo ''
fi
done

脚本的最新版本