在使用 git log 列出两个commit 或者两个分支之间的历史时,有些用户对log的范围很疑惑,到底是取哪一段 ?

这里说说明一下

  • git log commit-1 : 从开始到这个commit
  • git log branch-1 : 从开始到 branch-1 的head
  • git log foo bar:  既包含 foo , 又包含bar, 分支和commit 同理
  • git log foo..bar  等同于 git log  ^foo bar  :不包含 foo , 包含 bar
  • git log foo...bar  等同于 git log A B --not $(git merge-base --all A B)  :包含 foo , 不包含 foo和bar的公共部分

可能还是不太好理解,下面上图,一图胜千言,一看就明白了



git log 是取的范围,这点和git diff 是不同的,git diff 请参见 git diff 没有点、两个点和三个点的区别