我有一个具有多个分支的git存储库。
我如何知道哪些分支已经合并到主分支中?
我有一个具有多个分支的git存储库。
我如何知道哪些分支已经合并到主分支中?
当前回答
下面是一个小的一行程序,它可以让你知道你当前的分支是否包含了来自远程源/主分支的数据:
$ git fetch && git branch -r --merged | grep -q origin/master && echo Incorporates origin/master || echo Out of date from origin/master
我在做一个特性分支的时候遇到过这个问题,我经常想要确保我把最近的工作合并到我自己单独的工作分支中。
为了泛化这个测试,我在~/.gitconfig中添加了以下别名:
[alias]
current = !git branch -r --merged | grep -q $1 && echo Incorporates $1 || echo Out of date from $1 && :
然后我可以调用:
$ git current origin/master
来检查我是否在运行。
其他回答
Git branch -merged master列出并入master的分支
git branch—merged列出合并到HEAD中的分支(即当前分支的尖端)
Git branch -no-merged列出未合并的分支
默认情况下,这只适用于本地分支。-a标志将显示本地和远程分支,而-r标志仅显示远程分支。
下面是一个小的一行程序,它可以让你知道你当前的分支是否包含了来自远程源/主分支的数据:
$ git fetch && git branch -r --merged | grep -q origin/master && echo Incorporates origin/master || echo Out of date from origin/master
我在做一个特性分支的时候遇到过这个问题,我经常想要确保我把最近的工作合并到我自己单独的工作分支中。
为了泛化这个测试,我在~/.gitconfig中添加了以下别名:
[alias]
current = !git branch -r --merged | grep -q $1 && echo Incorporates $1 || echo Out of date from $1 && :
然后我可以调用:
$ git current origin/master
来检查我是否在运行。
您可以使用git merge-base命令来查找两个分支之间的最新公共提交。如果该提交与分支头相同,则该分支已经完全合并。
注意,git branch -d已经做了这类事情,因为它将拒绝删除尚未完全合并的分支。
还有一个图形界面解决方案。只要输入
gitk——所有
一个新的应用程序窗口将提示你的整个回购的图形表示,在那里很容易意识到一个分支是否已经合并
我使用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:只看头部(即树枝)