我有一个包含许多分支的Git存储库,其中一些已经合并,而另一些则还没有。由于分支数量相当大,我应该如何确定哪些分支尚未被合并?我想避免进行"章鱼"合并并重新合并已经合并的分支。
我有一个包含许多分支的Git存储库,其中一些已经合并,而另一些则还没有。由于分支数量相当大,我应该如何确定哪些分支尚未被合并?我想避免进行"章鱼"合并并重新合并已经合并的分支。
试试这个:
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
foo
合并到master
,它将出现在git branch --merged master
列表中。但是,如果你再次提交到foo
会发生什么?它是否不再出现在该列表中,还是即使有新的提交,它仍然会出现在该列表中,因为它曾经被合并到master
中? - Craig Otisgit branch --no-merged master
只显示我的本地分支。它不会显示任何在我的电脑上没有检出并由其他人创建的分支。 - Anton Danilchenko你也可以使用-r
参数来显示未合并到主分支的远程分支:
git branch -r --merged master
git branch -r --no-merged
-a
命令同时查看远程和本地。 - Simon Forsberg如果一个分支已经合并,再次合并它将不会产生任何影响。 因此,您不必担心“重新合并”已经合并的分支。
回答您的问题,您可以简单地发出
git branch --merged
查看已合并的分支或
git branch --no-merged
查看未合并的分支。当前分支是默认的,但如果需要,可以指定其他分支。
git branch --no-merged integration
该命令将显示尚未合并到integration
分支中的分支。
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