【问题标题】:git merge differences using ".." instead of "..."git 使用“..”而不是“...”合并差异
【发布时间】:2020-11-09 23:53:59
【问题描述】:

我有一个 master 和一个 dev 分支。当我使用git diff master...dev 比较两个分支时,它们之间没有区别。但是,当我使用git diff master..dev 时,dev 中存在一些 master 中不存在的文件。

我想将 dev 合并到 master 中,以便 git diff master..dev 显示的那些文件(即 dev 中存在但 master 中不存在的文件) 存在于 master 中。

当我尝试创建拉取请求时,我在 github 上收到 “There is nothing to compare” 错误,因为它使用“...”进行比较。如何根据“..”比较合并这两者?

PS:我查看了this以了解“..”和“...”之间的区别,但不确定如何与“..”合并

【问题讨论】:

  • 听起来你在两个分支上都有不同的提交,但文件本身是相同的。为什么不能直接将 dev 合并到 master 中?您不需要有差异即可合并。
  • 请注意,git merge not 表示“相同”。相反,它意味着结合从某个共同起点开始的更改。如果另一个分支自共同起点以来没有任何变化,则无事可做,即使您的分支和另一个分支不同。您有他们没有的更改,但是将他们的更改(您已经拥有的)添加到您的更改(您已经拥有的)中可以让您恢复已经拥有的东西。
  • 同时,从另一个角度来看:git merge 从不使用..。两点与三点的语法充其量只是一个红鲱鱼——它在git diff 中的含义与在git log 中的含义不同,并且它们都没有直接连接到git merge

标签: git github git-diff


【解决方案1】:

git diff master...dev means git diff $(git merge-base master dev) dev.

(编辑:“@eftshift0 说了什么”:

这意味着当您使用... 时,您并没有比较您提供的两个分支之间的差异......相反,它显示了 共同祖先 之间的差异这些分支和第二个提供。所以,在第二个分支上你可能已经提交了一些东西,然后它被还原了

或者在 dev 上可能根本没有提交(但还没有在 master 上)。)

【讨论】:

  • 这意味着当您使用... 时,您并没有比较您提供的两个分支之间的差异......相反,它显示了 common 祖先之间的差异 这些分支和第二个提供。所以,在第二个分支上你可能已经提交了一些东西,然后它被还原了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多