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

时间:2015-08-19 05:59:34

标签: git githooks

我正在开发一个git预推更新挂钩,其中我想仅在没有与之关联的合并提交时检查提交中的特定条件。如果存在与相关合并提交的提交,那么我想跳过检查单个提交并检查合并提交。

为了能够做到这一点,我需要拥有与合并提交相关联的提交的确切列表,以便我可以从提交列表中过滤掉它们,其中包含被推送到远程的提交的总列表

是否有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钩子的一部分工作时,这很有效。有没有办法使用合并提交的SHA ID并获取这些详细信息?

我还希望获得f778e20..cefb2e9范围内包含的所有提交列表。这将为我提供与合并提交相关联的提交的总列表。

我尝试使用git rev-list f778e20..cefb2e9,但这列出了很多提交。

有任何建议/想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

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

以下是一个问题的链接,该问题提供了有关选择这些哈希(父母)以获得明确范围的详细信息。

http://stackoverflow.com/questions/18679870/list-commits-between-2-commit-hashes-in-git