【问题标题】:How to find all commits associated with a merge commit in GIT?如何在 GIT 中查找与合并提交相关的所有提交?
【发布时间】:2015-11-12 06:51:11
【问题描述】:

我正在研究一个 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 钩子的一部分。有没有办法使用合并提交的 SHA id 并获取这些详细信息?

我还想获取 f778e20..cefb2e9 范围内包含的所有提交列表。这会给我与合并提交相关的提交的总列表。

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

有什么建议/想法吗?

【问题讨论】:

  • 定义“与合并提交相关的提交”。你的意思是“合并提交的父母”吗?还有什么?

标签: git githooks


【解决方案1】:

你可以使用类似的东西:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2011-09-05
    • 2019-09-02
    • 2019-04-28
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2010-12-21
    相关资源
    最近更新 更多