如何让Github执行'git diff…'(两个点)而不是'git diff…'(三个点)

如何让Github执行'git diff…'(两个点)而不是'git diff…'(三个点),git,Git,假设我有两个分支,master和feature 我们的目标是在Github上以可视化的方式查看master和feature之间的整个差异。这在默认情况下是不可能的,因为Github使用git diff…(三个点),在两个分支之间进行diff时,它使用最新的公共祖先。这意味着在该公共父项之后引入到主项中的差异将不会显示在具有功能的差异中,从而导致差异错误 我正在寻找解决这个问题的办法 好的。。。。我有点理解你在问什么,你的目标是什么。。。。你想做的是不对的 所以。。。比方说,创建要素分支。然后修改

假设我有两个分支,
master
feature

我们的目标是在Github上以可视化的方式查看
master
feature
之间的整个差异。这在默认情况下是不可能的,因为Github使用
git diff…
(三个点),在两个分支之间进行diff时,它使用最新的公共祖先。这意味着在该公共父项之后引入到
主项
中的差异将不会显示在具有
功能的差异中,从而导致差异错误

我正在寻找解决这个问题的办法

好的。。。。我有点理解你在问什么,你的目标是什么。。。。你想做的是不对的

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

目前,如果您将分支推到github并创建了PR,当查看文件的差异时,您会看到您添加的5行,而不是其他开发人员添加的其他5行的差异,对吗?这是你所期望的,因为你的公关只增加了那5行,而不是其他5行。如果PR的差异始终显示出与master的所有差异,那么随着master的不断进步,差异将不断增长,而这些变化与您的PR无关。。这就是为什么github使用
来计算差异,而不是


已经解释过,根据您的要求,您希望能够将基础重新设置为master。。。然后,您是否希望保持该文件在功能分支上的状态,即使它已在master上修改?好吧,这完全是胡说八道,因为这意味着在你的PR中,当你以这种方式重新设置后,当你创建它时,你要求删除开发人员在合并分支之前添加的其他5行。

听起来你好像真的不想要一个功能分支。如果您确定总是要覆盖主控,那么只需直接提交给主控但除非您是此存储库中唯一的工作人员,否则我不推荐您使用此存储库。

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

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

假设我们要更新
主分支和
功能分支之间的共同祖先,请按以下步骤进行操作:

  • 转到
    master
    git pull--rebase
    以确保您拥有最新的master
  • 使用
    git分支-b temp\u master创建分支
    master
  • 签出
    feature
    分支,然后从这里运行
    git merge-s ours temp\u master
  • 您现在可以删除
    temp\u master
    并使用
    git push-f原点功能推送
    功能

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

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

  • 打开
    master
    feature
    之间的差异查看页面。用户界面一直在变化,但最终您的url应该如下所示:
  • 将页面url中的三个点更改为两点
  • 利润 github上有官方文档-

    您可以在url中使用分支名称或哈希权限。
    默认情况下,在主分支和本地分支之间进行比较,以类似短url的方式打开。只需在url中添加
    master..

    您了解重基的作用吗?为什么你认为它会覆盖所有更改?@evolutionxbox我不认为它会,但我需要它。我正在寻找类似于git merge-s ours的东西。最终目标是更新
    master
    feature
    之间的共同祖先。因此,我想将所有更改从主功能拉到功能,然后基本上用“功能”版本覆盖
    master
    feature
    之间的所有公共文件。因此,您想摆脱对您在分支上更改的文件的修改,这些文件在分支发散后也在主功能上进行了修改(以及那些文件,您希望它们与主控程序当前提示中的一样),是这样吗?@Alderath就像我说的,这样做的全部目的是更新
    功能
    主控
    之间的共同祖先,以便git在github上显示正确的差异。我需要以可视化的方式在主控和分支之间保持恒定的差异。这正是我想要做的。本质上,我需要github来o
    git-diff-feature..master
    而不是
    git-diff-feature..master
    。但是由于这无法更改,我需要这个复杂的过程来更新公共祖先。“如果PR的差异始终显示出与master的所有差异,那么随着master的不断进步,差异将不断增长,而这些变化与您的PR无关。”。。"-事实上,这就是我想要的!您想要做的是不正确的,所以我不打算通过提供一个配方来简单地破坏您的代码,因为-稍后您会注意到,尽管在master上提交了更多更改,但差异仍然存在-如果您的分支被合并,您正在破坏已经提交的其他开发我不想手指指向@eftshift0在这种情况下,对不起。那没有意义。看,主分支包含一些设备的批准配置文件。“功能”分支的名称是“实际”,此分支包含通过SSH合并的设备配置。因此,我需要一种方法来始终检查设备上已批准的配置和实际配置之间的差异。我们不是在谈论编写应用程序或任何东西。有很多方法可以做到这一点……就像使用
    git diff..
    (带两个点)……但是您想强制执行吗