git:审查 'git fetch' 之后的更改

git: reviewing changes after 'git fetch'

在 git 获取之后,我想查看从上游引入的代码更改。

我可以使用 git log -p ..@{u},但是输出将不包括拉取请求的合并 commits/merges 的差异。

有没有办法将这些包含在输出中,从而生成自我上次拉取以来发生的更改的全面历史记录?

谢谢

当使用 git log -p 将提交视为补丁时,正如您注意到的那样,它会在需要区分它们时跳过合并提交。也就是说,它像往常一样向您显示日志 message,但完全没有区别。

您可以通过三个选项来控制它:

  • -c(一个连字符和一个小写 C):显示一种形式的组合 diff
  • --cc(两个连字符和两个小写字母 C):显示组合 diff
  • 的另一种形式
  • -m:"split" 每次合并,显示针对 每个 父级的补丁。在这种情况下,您将看到两次日志消息。

a separate section of the git diff documentation (and several others that share this file). For some reason, though,1 a key fact is hidden in this earlier section:

中描述了组合差异格式

Note that combined diff lists only files which were modified from all parents.

通常这实际上是您想要的:如果合并保持文件 README.txt 与任一父提交中的 README.txt 相同,那么显示与另一个父提交的差异可能没有意义犯罪。但是,如果您没有预料到这一点,那可能会令人大吃一惊。打败它的唯一方法是使用 -m.


1这对 git diff-treegit diff-filesgit diff --raw 有一定意义,因为该部分本身描述的是 将列出的文件,并且将不会列出与至少一个父项匹配的文件。但是,如果您没有记住这个小事实,而只是在文档中搜索紧接的下两个部分("generating patches with -p" 和 "combined diff format"),关键句可能甚至不会出现在您的 [=54] 中=].我仍然记得被这件事烧伤了,不管多少年过去了。 :-)