Git 不包括分支的日志

Git log excluding branch

考虑以下提交历史:

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 的提交)吗?

使用git log R --not P。这与 @micha-wiedenmann 的评论中的 git log P..R 相同,但我发现前一种语法更能说明问题。是的,它将包括 2, 4, 6, 7, 9,因为它们按时间顺序发生的时间(就创作时间而言)无关紧要,但它们在 DAG 中的位置并不重要。使用 R --not P 你基本上可以根据集合论在 R 中创建 P 的补集。