Answers:
试试这个:
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
?
--merged
仅列出完全合并到给定分支中的分支。
gitk --remotes --not origin/master
您显示尚未合并到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
Below script will fetch you unmerged branches and write results in .xls file
#!/usr/bin/env bash
echo "getting list of unmerged_branches from the remote"
file_name=unmerged_branches.xls`enter code here`
current_time=$(date "+%Y.%m.%d-%H.%M.%S")
for branch in `git branch -r --no-merged | grep -v HEAD`;
do echo -e `git show --format="%cd \\t%cr \\t%ae" $branch | head -n 1` \\t$branch;
done | sort -r >> $current_time.$file_name
echo "result is writtein in ";
echo $current_time.$file_name;