我有一个Git仓库,里面有很多分支,有些分支已经合并了,有些分支还没有合并。由于分支的数量非常多,我怎么才能确定哪些分支还没有合并呢?我想避免做一个“章鱼”合并,重新合并已经合并的分支。
0sgqnhkj1#
试试这个:
git branch --merged master
它会按照它在tin上说的那样做(列出已经合并到master中的分支)。你也可以用以下命令来拉取相反的分支:
master
git branch --no-merged master
如果不指定master,例如..
git branch --merged
然后它将显示已经合并到当前HEAD的分支(所以如果你在master上,它相当于第一个命令;如果您使用是foo,则等效于git branch --merged foo)。您还可以通过指定-r标志和要检查的ref(可以是本地或远程)来比较上游分支:
HEAD
foo
git branch --merged foo
-r
git branch -r --no-merged origin/master
m528fe3b2#
您还可以使用-r参数来显示未合并到master中的远程分支:
git branch -r --merged master git branch -r --no-merged
o7jaxewo3#
**如果一个分支已经被合并,那么再次合并它不会做任何事情。**所以你不必担心“重新合并”已经合并的分支。
要回答你的问题,你可以简单地
查看合并的分支或
git branch --no-merged
以查看未合并的分支。您的当前分支是隐含的,但如果愿意,您可以指定其他分支。
git branch --no-merged integration
将显示尚未合并到integration分支中的分支。
integration
vaj7vani4#
下面的脚本将查找当前分支之前的所有origin/*分支
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
4条答案
按热度按时间0sgqnhkj1#
试试这个:
它会按照它在tin上说的那样做(列出已经合并到
master
中的分支)。你也可以用以下命令来拉取相反的分支:如果不指定
master
,例如..然后它将显示已经合并到当前
HEAD
的分支(所以如果你在master
上,它相当于第一个命令;如果您使用是foo
,则等效于git branch --merged foo
)。您还可以通过指定
-r
标志和要检查的ref(可以是本地或远程)来比较上游分支:m528fe3b2#
您还可以使用
-r
参数来显示未合并到master中的远程分支:o7jaxewo3#
**如果一个分支已经被合并,那么再次合并它不会做任何事情。**所以你不必担心“重新合并”已经合并的分支。
要回答你的问题,你可以简单地
查看合并的分支或
以查看未合并的分支。您的当前分支是隐含的,但如果愿意,您可以指定其他分支。
将显示尚未合并到
integration
分支中的分支。vaj7vani4#
下面的脚本将查找当前分支之前的所有
origin/*
分支