我有一个具有多个分支的git存储库。
我如何知道哪些分支已经合并到主分支中?
我有一个具有多个分支的git存储库。
我如何知道哪些分支已经合并到主分支中?
当前回答
我使用git for-each-ref来获得一个分支列表,这些分支要么被合并,要么没有合并到给定的远程分支中(例如origin/integration)。
遍历所有匹配<pattern>的引用,并根据给定的<format>对它们进行排序,然后根据给定的<key>集对它们进行排序。
注意:如果你倾向于使用git pull而不是git fetch,请将origin/integration替换为integration。
合并到远程起源/集成分支的本地分支列表
git for-each-ref --merged=origin/integration --format="%(refname:short)" refs/heads/
# ^ ^ ^
# A B C
branch1
branch2
branch3
branch4
答:只取合并到远程原点/集成分支中的分支 B:打印分支机构名称 C:只看头部(即树枝)
未合并到远程起源/集成分支的本地分支列表
git for-each-ref --no-merged=origin/integration --format="%(committerdate:short) %(refname:short)" --sort=committerdate refs/heads
# ^ ^ ^ ^
# A B C D
2020-01-14 branch10
2020-01-16 branch11
2020-01-17 branch12
2020-01-30 branch13
答:只取未合并到远程原点/集成分支的分支 B:打印分支名称和最后提交日期 C:按提交日期排序输出 D:只看头部(即树枝)
其他回答
Git branch -merged master列出并入master的分支
git branch—merged列出合并到HEAD中的分支(即当前分支的尖端)
Git branch -no-merged列出未合并的分支
默认情况下,这只适用于本地分支。-a标志将显示本地和远程分支,而-r标志仅显示远程分支。
为了验证哪些分支被合并到master中,你应该使用这些命令:
Git branch <flag[-r/-a/none]>——merged master所有分支合并到master的列表。 Git branch <flag[-r/-a/none]>——merged master | wc -l count并入master的所有分支的数量。
标志是:
-a flag - (all)显示远程分支和本地分支 -r flag - (remote)仅显示远程分支 <emptyFlag> -只显示本地分支
例如:git branch -r——merged master将显示所有合并到master的远程存储库。
我使用以下bash函数:git-is-merged development feature/new-feature
git-is-merged () {
merge_destination_branch=$1
merge_source_branch=$2
merge_base=$(git merge-base $merge_destination_branch $merge_source_branch)
merge_source_current_commit=$(git rev-parse $merge_source_branch)
if [[ $merge_base = $merge_source_current_commit ]]
then
echo $merge_source_branch is merged into $merge_destination_branch
return 0
else
echo $merge_source_branch is not merged into $merge_destination_branch
return 1
fi
}
我区分git分支对git分支-合并的主要如下:
diff <(git branch) <(git branch --merged main)
然后,您将看到尚未合并到main中的任何本地分支。
要检查源分支是否已经合并到主分支,可以使用以下bash命令:
git merge-base --is-ancestor <source branch name> master && echo "merged" || echo "not merged"