我有两个本地分支,分别是A和B。我运行以下命令
- git checkout A
- 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
提供了如何在不寻求人类帮助的情况下解决这些冲突的提示。