查找未合并的Git分支?(Find unmerged Git branches?)

2019-06-18 00:54发布

我有一个Git仓库设有多家分支机构,他们中的一些已经合并,有些不是。 由于分支的数量是相当大的,我怎么能确定哪个分支尚未合并? 我想,以避免做一个“章鱼”合并,并已经被合并再合并分支。

Answer 1:

试试这个:

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


Answer 2:

您还可以使用-r参数表明,没有合并到主远程分支:

git branch -r --merged master

git branch -r --no-merged


Answer 3:

如果分支已经合并,将其合并也不会做任何事情。 所以你不必担心那些已经合并“重新合并”分支。

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

 git branch --merged

看到合并分支机构或

 git branch --no-merged

看到未合并分支。 您当前的分支暗示,但如果你愿意,你可以指定其他分支。

 git branch --no-merged integration

你会显示尚未合并到分支integration分支。



Answer 4:

下面的脚本会发现所有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

向上最新版本的脚本



文章来源: Find unmerged Git branches?