Git,合并已经是最新的,但有差异吗?



我有两个本地分支,分别是A和B。我运行以下命令

  1. git checkout A
  2. git merge - x他们的B -注释

如果我再次运行命令
git合并B——比;它抛出消息"Already up to date">

如果我运行以下命令B——>它返回4个文件中的差异

所以我"分支A的含量与分支B的含量如果我在分支A上再次运行合并命令,它返回一切都是最新的但是如果我运行"diff"在两个分支之间,它返回四个文件中的差异。

发生了什么事?

提前感谢。
敬祝

注意事项:

  • 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;branch1已经到达了branch2到达的所有提交。因此,"到目前为止"。但是commitM和commitZ也不是完全相同的。


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

git merge -X theirs B

做一些关于合并的特殊操作。它不是。这仍然是一次非常普通的合并。它唯一特别做的是以防发生合并冲突;theirs提供了如何在不寻求人类帮助的情况下解决这些冲突的提示。