git - 合并到 master 后查找开发人员分支
问题描述
问题 - 在合并到 master 后找到所有开发人员分支。扩展 - 对标签 X 和 Y 之间的所有修订执行此操作。
X-----A----B---C---D---E----Y
\ /
F------G-----H
使用 git CLI,如何找到对 (A,F) 和 (E,H) ?
解决方案
(如果“分支”是指分支名称,则不能:该信息已消失。)
假设您的意思是找到提交,很容易找到E
,因此也很容易D
and H
:git rev-list --min-parents=2 <endpoint>
枚举两个或更多父母的提交。 --min-parents=2
可以拼写--merges
。给定 commit E
,您可以查看它的父级,或者git rev-list
在具有合并哈希的同一行上吐出父级哈希,为您提供D
和的哈希 ID H
。
查找A
andF
更困难,但也可能是错误的:
...--o--x--...--x----...----M--o
\ \ /
*--...--*--...--o
两个加星标的提交都回到了 的第一父分支血统M
,因此两者都是潜在的兴趣点。
我不确定是否可以git rev-list
在这里识别两个加星标的提交。请注意,在这种图中,除了其中一个之外,所有这些都是合并,但我们也可以有:
...--o--x----...----W--...--M--o
\ / /
*--...--*--...--o
whereW
也是一个合并,这次是在来自 的第一父行M
上,它从底部的第二父行引入提交。
所有合并将来自rev-list
其输出限制为--merges
. 添加--first-parent
以避免遍历第二条腿。
您可以使用git rev-list --parents
生成构建图形所需的数据,然后编写自己的图形处理算法,以选择您喜欢的任何内容。请注意,git rev-list
它也可以与枚举那些提交--ancestry-path
的语法一起使用:X..Y
- 是 Y 的祖先(包括 Y 本身);但
- 不是 X 的祖先(因此不包括 X 本身);和
- 有 X 作为祖先,即是 X 的后代
法线X..Y
只为您提供满足条件一和条件二的提交,这意味着在这样的图中:
o--o <-- X
/ \
...--o--o--*---*--* <-- Y
你得到所有加星标的提交。添加--ancestry-path
剔除最左边的星号提交,因为它不是提交的后代X
(尽管git rev-list
实际上不是通过测试“是 X 的提交后代”而是“X 是提交的祖先”来确定这一点 - 连接 DAG 中节点的弧线所有的点都向后,所以 is-ancestor 是一个简单的测试,而 is-descendant 是困难的)。
推荐阅读
- java - 如何创建依赖于其他库(Java、libgdx)的库
- delphi - SetRoundMode(rmUp) 和 RoundTo(4.1, 0) - 意外结果
- android - 我有多个 ImageView;为什么我不能将 ImageViews 从单独的类引用到主类中?
- node.js - [猫鼬错误]:conn.openUri(...).then 不是函数
- vue.js - 在 VueJs 中删除这个循环实例
- sql - SQL - 删除重复项,使用 HAVING 子句和 NTEXT 列选择最近的
- qt - 如何在 Felgo/QML 的 NavigationItem 上设置自定义图像
- gis - Netlogo:从 GIS 矢量特征制作列表
- java - Orika 对象映射
- c++ - 如何让 librdkafka C++ producer 示例在调试器下的 Windows 上工作?