Git ,已合并到最新但有差异?

Git , Merge Already Up TO date but with diff?

我在本地有两个分支机构,比如 A 和 B。 我运行以下命令

  1. git结帐A
  2. git merge -X theirs B - "comment"

如果我运行再次命令
git 合并 B --> 它抛出消息“已经是最新的”

如果我运行跟随命令 git diff A..B --> 它 return4 个文件的差异

所以我用分支B的内容“粉碎”了分支A的内容 如果我再次 运行 分支 A 上的合并命令它 return 一切都是最新的 但是如果我 运行 两个分支之间的“差异”它 return 四个文件的差异。

发生了什么事?

提前致谢。
最好的问候

要知道的事情:

  • Git 流量 提交.

  • 每个提交都有至少一个父项,并且通过其父项链“到达”其他提交。

  • 分支是一次提交的名称。

  • 合并创建一个提交并移动当前分支的分支名称。

  • 短语“最新”意味着一个分支没有达到另一个分支没有达到的任何提交。

假设我们从这种情况开始(箭头指向时间倒退,每个提交都指向其父项):

A <-- B <-- C <-- D (branch1)
 ↖︎
   <-- X <-- Y <-- Z (branch2)

现在我结帐 branch1 并说 git merge branch2。我明白了:

A <-- B <-- C <-- D <-- M (branch1)
 ↖︎                    ↙︎
   <-- X <-- Y <-- Z (branch2)

所以现在,一方面,尝试将 branch2 合并到 branch1 again 是没有意义的; branch1 已经达到了 branch2 达到的所有相同提交。因此,“最新”。但是提交 M 和提交 Z 也不相同。


也许你的困惑是因为你认为

git merge -X theirs B

在合并方面做了一些特别的事情。它没有。这仍然是一个非常普通的合并。它唯一特别做的事情是万一发生任何合并冲突; theirs 提供了有关如何在不寻求人工帮助的情况下解决这些冲突的提示。