我有一个具有多个分支的git存储库。
我如何知道哪些分支已经合并到主分支中?
我有一个具有多个分支的git存储库。
我如何知道哪些分支已经合并到主分支中?
当前回答
关于清理远程分支的主题
git branch -r | xargs -t -n 1 git branch -r --contains
这列出了每个远程分支,然后是它们的最新sha所在的远程分支。
这对于辨别哪些远程分支已合并但未删除,哪些未合并因此正在衰减非常有用。
如果你使用“tig”(它类似于gitk,但基于终端),那么你可以
tig origin/feature/someones-decaying-feature
查看分支的提交历史,而无需git签出
其他回答
我使用以下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
}
要检查源分支是否已经合并到主分支,可以使用以下bash命令:
git merge-base --is-ancestor <source branch name> master && echo "merged" || echo "not merged"
您可以使用git merge-base命令来查找两个分支之间的最新公共提交。如果该提交与分支头相同,则该分支已经完全合并。
注意,git branch -d已经做了这类事情,因为它将拒绝删除尚未完全合并的分支。
还有一个图形界面解决方案。只要输入
gitk——所有
一个新的应用程序窗口将提示你的整个回购的图形表示,在那里很容易意识到一个分支是否已经合并
为了验证哪些分支被合并到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的远程存储库。