我正在尝试在git历史记录中识别pull request merge commit。
我们通常可以使用类似的东西:
git log --merges |grep 'Merge pull request'`
但是,我是具有多个存储库分支的分布式项目的一部分,并且发现作为fork的开发流的一部分的pull请求合并提交正在污染此输出。这甚至可以在Github的用户界面中观察到。
示例:
18b389... Merge pull request #2222 from Fork/master <-- Fork/master to Upstream/master for feature X - Want.
ea3e5b... Merge pull request #12 from Fork/feature-x <-- Fork/feature-x to Fork/master - Dont want.
我想只隔离叉子和上游之间的合并提交,而不是叉子叉子或叉子叉子之间。这可能吗?
我的实际目标是能够识别一系列提交之间的所有pull请求合并提交SHA,但是这些错误提交会通过引用不相关的PR来污染结果 - 提交消息中fork和upstream之间没有区别。
答案 0 :(得分:0)
这不可能100%可靠地完成。但是有一些方法可以接近:
grep
吗? --first-parent
开关添加到您对git log
的通话中。这可能不会给你所有相关的拉取请求,但它不应该给你任何你不想要的。 --first-parent
告诉git log
仅遵循合并提交的第一个父级,而不是跟随所有父级。合并的分支始终是第一个父级,因此这是查看直接在您正在查看的分支上发生的历史记录的有效方法。
git log --first-parent
下。