如何在GIT中找到与合并提交相关的所有提交?

3
我正在编写一个 git pre-push 更新挂钩,其中我希望只在没有关联合并提交的情况下检查提交中的特定条件。如果有一个与之关联的合并提交,则我想跳过检查单个提交并检查合并提交。
为了能够实现这一点,我需要获得与合并提交相关的确切提交列表,以便我可以从提交列表中筛选出它们,该列表包含将被推送到远程的全部提交的列表。
是否有git命令/选项可以找到合并提交中合并的提交范围?
例如:我只想获取以下突出显示的文本作为命令输出:
$ git log --merges
commit fd3d8c5bc3e689cf44b5ca1e8d06fe2a6bd02716
**Merge: f778e20 cefb2e9**
Author: abc <abc@abc.com>
Date:   Mon Aug 17 22:00:49 2015 -0700

Merge branch 'feature_personal'

我尝试执行以下操作:

$ git log --pretty=%P -n 1
f778e20d1bfa0b1821d93feca3863a69af48de1f cefb2e96279447b2c268167a2db3605b84717de

这在客户端使用“-n 1”时效果良好,但作为git hook的一部分在服务器端则不行。有没有一种方法可以使用合并提交的SHA id并获取这些详细信息呢?
我还想获取范围f778e20..cefb2e9中包含的所有提交的列表。这将给我与合并提交相关的所有提交的完整列表。
我尝试使用“git rev-list f778e20..cefb2e9”,但这会列出很多提交。
有任何建议或想法吗?

1
定义“与合并提交相关的提交”。你是指“合并提交的父提交”吗?还是其他什么? - jub0bs
1个回答

1
您可以使用类似以下的东西:

你可以像这样使用:

git log --oneline --merges <commit_hash_to> <commit_hash_from>

以下是一个问题的链接,其中提供了选择这些哈希(父级)以获得清晰范围的详细信息。

https://dev59.com/ymMl5IYBdhLWcg3wHTyg


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接