0

有没有办法在特定分支上的两个标签之间获取拉取请求。

现在,我正在使用 git log 来执行此操作。但是,这似乎带来了在第一个标签(PreviousVersion)之前创建的拉取请求。

git log --grep 'Merged PR' --oneline $CurrentVersion...$PreviousVersion --pretty=format:\"%s\"|cut -d':' -f 1|cut -d' ' -f3

你能帮我吗。

4

1 回答 1

2

$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 访问”,这通常是您想要的。

使用这个小示例存储库...

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。

有关示例,请参阅Pro Git 中的修订选择。

于 2021-02-26T23:33:49.247 回答