假设我有两个分支master
和feature
。
目标是要有一种直观的方式来查看Github上master
和feature
之间的差异。默认情况下这是不可能的,因为Github使用git diff ...
(三个点),当在两个分支之间进行比较时,它占用了最近的共同祖先。这意味着在同一个父级之后引入master
的差异不会出现在带有feature
的差异中,因此使差异是错误的。
我正在寻找解决此问题的方法。
答案 0 :(得分:1)
听起来好像您真的不需要功能分支。如果您确定始终要覆盖Master,则只需直接提交给Master。 但是除非您是该存储库中唯一的工作人员,否则我不建议这样做。
如果要查看提交之间的差异,请参见Comparing commits 或Comparisons 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
分支之间的公共祖先,请按照以下步骤操作:
master
和git pull --rebase
以确保您拥有最新的母版。master
在git branch -b temp_master
之外创建分支feature
分支,然后从此处运行git merge -s ours temp_master
temp_master
并用feature
推送git push -f origin feature
您的git pull请求现在将显示正确的差异。
答案 3 :(得分:0)
github上有官方文档-Three-dot and two-dot Git diff comparisons
简短-在页面网址中将三点更改为两点