问题描述
现在,我正在使用 git log 来执行此操作。但是,这似乎带来了在第一个标签(PrevIoUsversion)之前创建的拉取请求。
git log --grep 'Merged PR' --oneline $CurrentVersion...$PrevIoUsversion --pretty=format:\"%s\"|cut -d':' -f 1|cut -d' ' -f3
你能帮忙吗。
解决方法
$CurrentVersion...$PreviousVersion
并不意味着“在这两次提交之间”。这意味着“只有 $CurrentVersion 或只有 $PreviousVersion 可以访问任何提交”,因此您可能会在 $PreviousVersion 之前获得一些提交。
r1...r2 称为 r1 和 r2 的对称差,是 定义为 r1 r2 --not $(git merge-base --all r1 r2)。这是一组提交 可以从 r1(左侧)或 r2(右侧)之一到达,但不能 来自两者。
改为使用 $PreviousVersion..$CurrentVersion
(两个点)。这也不完全是“在这两次提交之间”,因为 Git 历史不是线性的。这意味着“提交可通过 $CurrentVersion 访问而无法通过 $PreviousVersion 访问”,这通常是您想要的。
使用这个 little example repository...
A
|
B [current]
|
C
|
| 1 [previous]
| |
| 2
| /
D
|
E
- 当前可以看到 B、C、D、E。
- 上一个可以看到 1、2、D、E。
current...previous
将显示 B、C(仅当前可达)和 1、2(仅先前可达)。
previous..current
将只显示 B 和 C。
current..previous
将只显示 1 和 2。
有关示例,请参见 Revision Selection in Pro Git。