跳至主要内容

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

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

注意

在创建拉取请求时,你可以更改用于比较更改的基准分支。欲了解更多信息,请参阅 创建拉取请求

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

与其查看提交本身,你可以将拟议的更改以合并后文件的形式进行查看。文件在“已更改文件”选项卡中按字母顺序显示。文件的新增内容以绿色显示,并以前缀 “+” 标记;被删除的内容以红色显示,并以前缀 “-” 标记。

差异视图选项

提示

如果你难以理解更改的上下文,可以在“已更改文件”选项卡中点击 View(查看),以查看包含拟议更改的完整文件。

你有多种查看差异的选项

  • 统一视图将更新的内容和已有内容一起线性显示。
  • 分割视图在一侧显示旧内容,另一侧显示新内容。
  • 富差异视图预览合并拉取请求后更改的显示效果。
  • 源代码视图以源码形式显示更改,不包含富差异视图的格式化。

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

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 上的两点差异比较中查看两个 committish 引用,你可以编辑仓库“比较更改”页面的 URL。更多信息,请参阅 Pro Git 站点上的 “committish” Git 词汇表

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

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

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

有关比较更改的 Git 命令的更多信息,请参阅 Pro Git 站点上的 Git diff 选项

关于 GitHub 上的三点比较

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

使用两点比较时,即使主题分支没有任何更改,只要基准分支更新,差异也会随之变化。此外,两点比较侧重于基准分支。这意味着你添加的任何内容都会被显示为基准分支中缺失的,好像是删除一样,反之亦然。于是,主题分支所引入的更改会变得模糊不清。

相比之下,使用三点比较分支时,只要基准分支更新,主题分支的更改始终会出现在差异中,因为差异显示自分支分叉以来的所有更改。

经常合并

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

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.