如何让 Github 做 'git diff '(两个点)而不是 'git diff ..'(三个点)

  • 本文关键字:git diff 三个 Github 两个 git
  • 更新时间 :
  • 英文 :


假设我有两个分支,masterfeature

目标是以一种可视化的方式查看 Github 上masterfeature之间的整个差异。默认情况下这是不可能的,因为 Github 使用git diff ...(三个点),在两个分支之间进行差异时,它会采用最新的共同祖先。这意味着在该共同父级之后引入master的差异将不会显示在带有feature的差异中,从而使差异出错。

我正在寻找这个问题的解决方案。

这是这里人们似乎不想给出的实际答案。使用风险自负。

假设我们要更新分支和feature分支之间的master共同祖先,请执行以下操作:

  1. 转到mastergit pull --rebase以确保您拥有最新的母版。
  2. 使用git branch -b temp_master创建master分支
  3. feature分支结帐,然后从这里运行git merge -s ours temp_master
  4. 您现在可以删除temp_master并使用git push -f origin feature推送feature

您的 git 拉取请求现在将显示正确的差异。

要在 github 上显示两个点差异:

  1. 打开masterfeature之间的差异视图页面。UI 一直在变化,但最终您的 url 应如下所示:https://github.com/USERNAME/REPOSITORY/compare/master...feature
  2. 将页面网址中的三点更改为两点
  3. 利润!

有关于 github 的官方文档 - 三点和两点 Git 差异比较

您可以在 url 中使用分支名称或哈希。 默认情况下,主分支与本地分支比较以短 URL 打开,如 https://github.com/USERNAME/REPOSITORY/compare/feature。只需将master..添加到网址即可。

好的....我有点明白你在问你的目的是什么......你想做的是不正确的。

所以......比如说,你创建了你的功能分支。然后你修改文件 a.txt,你向文件添加 5 行。与此同时,另一个开发人员获取了该文件,并在该文件中添加了 5 行(在单独的位置,没有冲突)并将其放在 master 上。

目前,如果您将分支推送到 github 并创建了一个 PR,在查看文件的差异时,您会看到您添加的 5 行,而不是其他开发人员添加的其他 5 行的差异,对吧?这就是您所期望的,因为您的 PR只添加了这 5 行,而不是其他 5 行。如果 PR 的差异始终显示与主节点的所有差异,则随着主节点继续进行与您的 PR 无关的更改,差异将一直增长。这就是为什么 GitHub 使用...来计算差异,而不是..

已经解释了,根据您的要求,您希望能够变基为大师......然后,您想保留功能分支上的文件,即使它在 master 上已被修改?好吧,这完全是疯狂的,因为这意味着在以这种方式变基后的PR中,当您创建它时,您要求删除开发人员之前在合并分支时添加的其他5 行。

听起来你并不真正想要一个功能分支。 如果你确定你总是想覆盖 Master,那么直接提交到 Master。但我不建议这样做,除非您是唯一在此存储库中工作的人。

如果要查看提交之间的差异,请参阅比较提交 或跨提交的比较

最新更新