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

时间:2019-07-03 14:41:34

标签: git

假设我有两个分支masterfeature

目标是要有一种直观的方式来查看Github上masterfeature之间的差异。默认情况下这是不可能的,因为Github使用git diff ...(三个点),当在两个分支之间进行比较时,它占用了最近的共同祖先。这意味着在同一个父级之后引入master的差异不会出现在带有feature的差异中,因此使差异是错误的。

我正在寻找解决此问题的方法。

4 个答案:

答案 0 :(得分:1)

听起来好像您真的不需要功能分支。如果您确定始终要覆盖Master,则只需直接提交给Master。 但是除非您是该存储库中唯一的工作人员,否则我不建议这样做。

如果要查看提交之间的差异,请参见Comparing commitsComparisons across commits

答案 1 :(得分:0)

好吧...。我了解您在问的目标是什么...。而您想做的是是正确的。 / p>

所以...说,您创建了功能分支。然后修改文件a.txt,在文件中添加5行。同时,另一位开发人员拿了该文件,并在该文件中又添加了5行(在单独的位置,没有冲突)并将其放到主文件上。

此刻,如果将分支推送到github并创建PR,则在查看文件的差异时,您会看到添加的5行而不是其他5行的差异由其他开发人员,对吗?这就是您所期望的,因为您的PR 仅添加了这5行,而不添加其他5行。如果PR的差异始终显示与master的 all 差异,则diff会一直增长,因为master会进行与您的PR不相关的更改。.这就是github使用...来计算diff而不是..的原因。

已经解释了,根据您的请求,您希望能够重新建立基础...然后您希望将文件保留在功能分支上,甚至虽然已在主服务器上进行了修改?好吧,这完全是胡说八道,因为这意味着在重新建立基础后,在您的PR 中,当您创建它时,您要求删除开发人员创建的 other 5行在分支合并之前添加了。

答案 2 :(得分:0)

这是实际答案,这里的人似乎不想给出。请自担风险。

假设我们要更新master分支和feature分支之间的公共祖先,请按照以下步骤操作:

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

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

答案 3 :(得分:0)

github上有官方文档-Three-dot and two-dot Git diff comparisons

简短-在页面网址中将三点更改为两点