我有一个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?