git - 如何在 GIT 中查找与 merge 提交关联的所有提交?

标签 git githooks

我正在研究一个 git pre-push update Hook ,其中我想检查提交中的特定条件,只有在没有与之关联的 merge 提交时。如果有一个带有关联 merge 提交的提交,那么我想跳过检查单个提交并改为检查 merge 提交。

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

是否有 git 命令/选项来查找 merge 到 merge 提交中的提交范围?

例如:我只想得到下面突出显示的文本作为命令输出:

$ 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)的一部分。有没有办法使用 merge 提交的 SHA id 并获取这些详细信息?

我还想获得 f778e20..cefb2e9 范围内的所有提交列表。这会给我与 merge 提交关联的提交的总列表。

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

有什么建议/想法吗?

最佳答案

你可以使用类似的东西:

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

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

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

关于git - 如何在 GIT 中查找与 merge 提交关联的所有提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32087581/

相关文章:

Git:如何在预提交 Hook 中重新暂存暂存文件

bash - 考虑到标准 Git 排除,列出所有跟踪和未跟踪的文件

git - 如何在两个不同的 git 存储库(不是克隆)中同步文件并维护历史记录?

git - 如何从 git index 获取文件的内容?

git - 如何在gitolite中安装钩子(Hook)

git - 为什么 `git cherry-pick` (没有 `--no-commit` )不运行我的提交后钩子(Hook)?

Git 服务器端 Hook 未触发 - 如何检查

r - 无法在 R-Studio 上实现 git 版本控制(版本控制系统 : NONE)

git - 如何在不做任何更改的情况下跳回我的提交?

git - git hooks 可以为我的代码文件添加版本号吗?