当以错误的顺序提供两个引用时,git日志可以工作吗?

当以错误的顺序提供两个引用时,git日志可以工作吗?,git,Git,我正在编写一个自动系统来列出两个提交引用之间的提交。假设我按时间顺序提交了3次,例如: A B C 我做了git log--pretty=oneline A..C,我得到了预期的日志。但是,如果我反转参数,例如git log--pretty=oneline C..A,我将一无所获。git不可能在提交引用方面很聪明吗 如果没有,是否有方法自动确定ref C是否应位于参数列表中的a之后?您可以运行 git merge-base A C 如果它返回A,那么您应该调用git log A..C 如

我正在编写一个自动系统来列出两个提交引用之间的提交。假设我按时间顺序提交了3次,例如:

  • A
  • B
  • C
我做了git log--pretty=oneline A..C,我得到了预期的日志。但是,如果我反转参数,例如
git log--pretty=oneline C..A
,我将一无所获。git不可能在提交引用方面很聪明吗

如果没有,是否有方法自动确定ref C是否应位于参数列表中的a之后?

您可以运行

git merge-base A C
  • 如果它返回A,那么您应该调用
    git log A..C
  • 如果它返回C,那么您应该调用
    git log C..A
  • 如果它返回其他内容,则A和C位于不同的分支上,
    merge base
    返回它们的共同祖先

虽然对称差(
)不同,但在这种情况下,您可以使用它:

git log A...C
git log C...A