git 提交区间

git 的提交区间指的是用两个点 A..B 或者三个点 A...B 的语法将 AB 两个提交连接起来,从而表示一系列提交。

这是非常容易让人产生疑惑的一个话题,主要是因为它没有固定的含义,需要根据不同的命令来记忆。本文主要结合 diff、log 这两个命令来介绍。

首先,假设我们基于初始提交建立了 a 和 b 两个分支,各有一次提交,如图所示。分支 a 的提交是数字,分支 b 的提交是字母。

diff

此时,双点语法 A..B 表示对比这 AB 两个提交的差异:

  • git diff branch_a..branch_b
  • # 直接对比两个 commit
  • # 等价于直接写空格
  • git diff branch_a branch_b

这个结果还是非常符合常识的,就不多解释了。

三点语法 A...B 则表示:AB 两次提交的共同祖先和 B 之间的 diff

  • git diff branch_a...branch_b

两个分支的共同祖先是第一次提交,因此上述命令其实是展示分支 b 和 b 的父提交之间的 diff。如图所示,

需要注意的是,如果两次提交在同一个分支上,那么双点和三点语法的效果是一致的

top Created with Sketch.