我正在开发一个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,但这列出了很多提交。
有任何建议/想法吗?
答案 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