git - git log:列出两个给定提交“之间”的提交
问题描述
考虑以下 git 历史记录(认为是C
从一次合并的功能分支master
):X
master
X
|
M
/|
C E D
|/ /
B /
|/
A
什么git log
范围的修订将为我提供所有可访问的提交X
并包括 的更改B
,即B E M X
?
注意:git log B..X
将包括D
我不想要的。
解决方案
如果排除的原因D
是它不是 的后代B
,1考虑使用--ancestry-path
:
git log --ancestry-path B..X # or git rev-list with the same arguments
然而,这确实排除B
在修订行走中。包含B
自身有点棘手:您可以选择--boundary
,但有时包含太多提交。另一种方法是使用B^@
排除所有父母B
而不排除B
自身。无论B
是常规提交还是合并,这都有效,否则--ancestry-path
操作不会受到干扰。如果B
是根提交,它甚至可以工作,但在这种情况下,我不确定这--ancestry-path
是否有用。
(如果 B 是一个普通的单亲提交,git log --ancestry-path B^..X
那么就可以做到这一点并且比 . 更容易思考B^@
。)
1这就是我对关于您为什么打算排除的原始问题发表评论的原因D
。
推荐阅读
- flutter - Flutter pub get 未安装在 Dart 包中
- linux - CMake:找不到 Qt5FontDatabaseSupport
- python - DJANGO - 多用户
- javascript - 在 DOM 插入跳过 CSS 过渡动画后过快地使用 javascript 更改过渡属性?
- reactive-programming - 如何使用 Rx 3.1.0v 和 pymongo python 接收响应式 mongo 数据
- python - 将树莓派拍的照片保存到挂载的 NAS
- stream - Genymotion 中的 v4l2loopback SMPTE 彩条
- c - 无法在 vscode iso99_scanf.c 错误中调试 C 程序
- react-native - 当我点击图标时打开抽屉反应导航版本 5
- wiremock - 使用wiremock body transformer jar访问单个json文件中的多个存根时出现Wiremock问题