我有一个包含许多分支的 Git 存储库,其中一些已经合并,有些没有。由于分支的数量很大,如何确定哪些分支尚未合并?我想避免必须进行“章鱼”合并和重新合并已经合并的分支。
尝试这个:
git branch --merged master
它执行它在 tin 上所说的(列出已合并到 master
中的分支)。您还可以使用以下方法提取逆:
git branch --no-merged master
如果您不指定 master
,例如..
git branch --merged
然后它将显示已合并到当前 HEAD
中的分支(因此,如果您在 master
上,则相当于第一个命令;如果您在 foo
上,则相当于 git branch --merged foo
) .
您还可以通过指定 -r
标志和要检查的 ref 来比较上游分支,可以是本地的或远程的:
git branch -r --no-merged origin/master
您还可以使用 -r
参数显示未合并到 master 的远程分支:
git branch -r --merged master
git branch -r --no-merged
-a
同时查看远程和本地
如果一个分支已经合并,再次合并它不会做任何事情。所以你不必担心“重新合并”已经合并的分支。
要回答您的问题,您可以简单地发出
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
The up-to-date version of the script
不定期副业成功案例分享
foo
合并到master
,它将出现在git branch --merged master
列表中。但是,如果您再次提交foo
会发生什么?它是否不再出现在该列表中,或者即使它有新的提交,它也在某一时刻合并到master
中?--merged
仅列出完全 合并到给定分支中的分支。git branch --no-merged master
仅显示我的本地分支机构。它不显示任何未在我的计算机上签出并由其他人创建的分支。