Git log不包括分支

16

考虑以下提交历史:

1---R---3---5---P->                  # patch-v1.1
     \       \
      2---4---+---8---+---10---R->   # release-v2.0
           \         /
            6---7---9                # feature-foo

--> time

# 1 - 10 are commits
# P is a patch release commit
# R are major release commits
# + marks a merge commit

我想生成release-v2.0版本的变更日志,但由于P(patch-v1.1)已经发布,它的变更不应该包含在v2.0版本的变更日志中。我能否配置git log命令只列出提交2、4、6..11(即来自release-v2.0feature-foo的提交)?


我还没有测试过它,但我认为它不会有问题,因为有时我会将“patch-v1.1”提交合并到“release-v2.0”分支中。 - Clashsoft
1
哦,没注意到补丁合并了,那 git log P..R 怎么样? - Micha Wiedenmann
那是否也包括2、4、6和7?它们在时间上先于P - Clashsoft
您可以在 git help rev-parse (指定范围) 中找到更多信息。 - Micha Wiedenmann
1个回答

20

使用git log R --not P命令。这与@micha-wiedenmann的评论中的git log P..R是相同的,但我觉得前一种语法更加直观易懂。是的,它将包括2、4、6、7、9,因为它们在DAG中的位置而非时间顺序上发生的先后顺序对结果有影响。使用R --not P会在集合理论中创建P与R之间的补集。


1
为了避免在上述有向无环图中将合并注释识别为+,您可能还应包括--no-merges选项。合并提交通常不会对变更日志贡献有意义的信息。 - Jeremy Fortune

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接