跳至主要内容

关于拉取请求中分支的比较

拉取请求显示差异,以比较您在主题分支中所做的更改与您要将更改合并到的基分支。

注意

创建拉取请求时,您可以更改要与其比较更改的基分支。有关更多信息,请参阅“创建拉取请求”。

您可以在“已更改的文件”选项卡中查看拉取请求中建议的更改。Screenshot of the tabs for a pull request. The "Files changed" tab is outlined in dark orange.

您可以查看建议的更改(一旦合并拉取请求,更改将显示在文件中),而不是查看提交本身。文件按字母顺序显示在“已更改的文件”选项卡中。文件的添加内容以绿色显示,前面带有+ 符号,而已删除的内容以红色显示,前面带有- 符号。

差异视图选项

提示

如果您难以理解更改的上下文,可以单击“已更改的文件”选项卡中的**查看**以查看包含建议更改的整个文件。

您可以通过多种方式查看差异

  • 统一视图将更新的内容和现有内容一起显示在线性视图中。
  • 拆分视图在一侧显示旧内容,在另一侧显示新内容。
  • 丰富的差异视图显示拉取请求合并后更改的外观预览。
  • 源视图显示源中的更改,没有丰富差异视图的格式。

您还可以选择忽略空白更改,以便更准确地查看拉取请求中的实质性更改。

Screenshot of the "Files changed" tab for a pull request. The "Diff view" menu is outlined in dark orange.

为了简化对大型拉取请求中更改的审查,您可以筛选差异以仅显示选定的文件类型、显示您是 CODEOWNER 的文件、隐藏您已查看的文件或隐藏已删除的文件。有关更多信息,请参阅“筛选拉取请求中的文件”。

Screenshot of the file filter dropdown menu. The menu is expanded and outlined in dark orange.

差异不显示的原因

三点和两点 Git 差异比较

git diff 命令有两种比较方法;两点 (git diff A..B) 和三点 (git diff A...B)。GitHub 上的拉取请求显示三点差异。

三点 Git 差异比较

三点比较显示两个分支的最新公共提交(合并基)与主题分支的最新版本之间的差异。

两点 Git 差异比较

两点比较显示基分支(例如,main)的最新状态与主题分支的最新版本之间的差异。

要在 GitHub 上的双点差异比较中查看两个提交引用,您可以编辑存储库“比较更改”页面的 URL。更多信息,请参阅Pro Git 书籍网站上的Git 词汇表中关于“提交引用 (committish)” 的解释

例如,此 URL 使用缩短的 SHA 代码来比较提交f75c5703391dcchttps://github.com/github-linguist/linguist/compare/f75c570..3391dcc

双点差异直接比较两个 Git 提交引用,例如 SHA 或 OID(对象 ID)。在 GitHub 上,双点差异比较中的 Git 提交引用必须推送到同一个存储库或其分支。

如果您想在拉取请求中模拟双点差异,并查看每个分支最新版本的比较,您可以将基础分支合并到您的主题分支,这将更新您分支之间最新的共同祖先。

有关比较更改的 Git 命令的更多信息,请参阅Pro Git 书籍网站上的“Git diff 选项”

关于 GitHub 上的三点比较

由于三点比较是与合并基础进行比较,因此它关注的是“拉取请求引入了什么”。

当您使用双点比较时,即使您没有对主题分支进行任何更改,更新基础分支也会导致差异发生变化。此外,双点比较关注的是基础分支。这意味着您添加的任何内容都显示为基础分支中缺少的内容,就像删除一样,反之亦然。结果,主题分支引入的更改变得模棱两可。

相反,通过使用三点比较来比较分支,如果更新了基础分支,主题分支中的更改将始终出现在差异中,因为差异显示了自分支分歧以来的所有更改。

频繁合并

为了避免混淆,请频繁地将基础分支(例如,main)合并到您的主题分支。通过合并基础分支,双点比较和三点比较显示的差异相同。我们建议尽快合并拉取请求。这鼓励贡献者创建更小的拉取请求,这通常是推荐的做法。

进一步阅读