跳至主要内容

关于在合并请求中比较分支

合并请求显示差异,以比较你在主题分支中所做的变更与你希望将变更合并到的基础分支之间的差异。

注意:创建合并请求时,你可以更改用于比较变更的基础分支。有关更多信息,请参阅“创建合并请求”。

你可以在“已更改文件”选项卡中查看合并请求中建议的变更。合并请求选项卡的屏幕截图。“已更改文件”选项卡以深橙色勾勒。

你可以查看建议的变更,而无需查看提交本身,因为这些变更在合并请求合并后将显示在文件中。文件按字母顺序显示在“已更改文件”选项卡中。添加到文件中的内容以绿色显示,并以 + 符号开头,而被删除的内容以红色显示,并以 - 符号开头。

差异视图选项

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

你可以选择多种方式来查看差异

  • 统一视图以线性视图同时显示更新和现有内容。
  • 拆分视图在一侧显示旧内容,在另一侧显示新内容。
  • 丰富差异视图显示合并请求合并后更改的外观预览。
  • 源视图显示源中的更改,不包含丰富差异视图的格式。

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

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 diff 比较

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

三点 Git diff 比较

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

两点 Git diff 比较

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

要在 GitHub 上的两点 diff 比较中查看两个提交引用,你可以编辑存储库的“比较更改”页面的 URL。有关更多信息,请参阅 Pro Git 书籍网站上的 Git 词汇表中的“提交”

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

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

如果你想在拉取请求中模拟两点 diff 并查看每个分支的最新版本之间的比较,你可以将基本分支合并到你的主题分支中,这会更新分支之间的最后一个公共祖先。

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

关于 GitHub 上的三点比较

由于三点比较与合并基准进行比较,因此它专注于“请求请求引入了什么”。

当你使用两点比较时,即使你没有对主题分支进行任何更改,在基准分支更新时,差异也会发生变化。此外,两点比较专注于基准分支。这意味着你添加的任何内容都会显示为基准分支中缺少的内容,就像它被删除了一样,反之亦然。因此,主题分支引入的更改变得模棱两可。

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

频繁合并

为了避免混淆,请频繁地将基准分支(例如,main)合并到你的主题分支中。通过合并基准分支,两点和三点比较显示的差异是相同的。我们建议尽快合并请求请求。这鼓励贡献者提出较小的请求请求,这通常是建议的做法。

进一步阅读