为什么合并需要考虑共同祖先?
我正在学习 Git,并且在 此网站上找到了教程非常有用。在该页面上,关于合并,它包括:
<前><代码> +---------- (D) --------------+ / | \ (A) -- (B) -- (C) -------------- (E) -- (F) | | 修复标题主控 | 头合并提交是 (F),具有 父母(D)和(E)。因为 (B) 是 (D) 和 (D) 之间的共同祖先 (E)、(F) 中的文件应包含 (B) 和 (D) 之间的变化, 即标题修复,合并 进入 (E) 中的文件。
我不明白为什么你会担心共同祖先 B。为什么你不能合并 D 和 E 来产生 F? D 将从 B 派生,但可能包含您想要的差异。 B 和 D 之间可能进行了多次提交,进行了更改并删除了更改。
I'm learning Git, and am finding the tutorial on this site very useful. On that page, concerning merging, it includes:
+---------- (D) ---------------+ / | \ (A) -- (B) -- (C) -------------- (E) -- (F) | | fix-headers master | HEAD
The merge commit is (F), having
parents (D) and (E). Because (B) is
the common ancestor between (D) and
(E), the files in (F) should contain
the changes between (B) and (D),
namely the heading fixes, incorporated
into the files from (E).
I don't understand why you would worry about the common ancestor B. Why can't you just merge D and E to produce F? D will have been derived from B but might contain differences you want. There might have been a number of commits between B and D, with changes being made and taken out.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
(我犹豫是否要问这是否是愚人节,我不想侮辱任何人......)
也许你不明白这是 git 进行合并 你?
问题:这是D和E,你能告诉我F应该是什么样子吗?
答案:不,你不能
但是,如果你知道 B 看起来像这样:
它变得毫无疑问,并且 git 可以自己处理这个。
不知道这是否回答了你的问题......
(I hesitate to ask if this is an April Fool's, I don't want to insult anyone...)
Maybe you're not understanding that this is git doing the merge for you?
Question: Here are D and E, can you tell me what F should look like?
Answer: No, you can't
However, if you know that B looked like this:
It becomes a no brainer, and git can handle this on its own.
Dunno if that answers your question...
这只是因为如果您知道共同祖先,合并效果会更好。请参阅此答案< /a>,它有很好的解释。
This is simply because merging works better if you know the common ancestor. See this answer, it has good explanation why.
维基百科有一个关于三向合并的很好的介绍
Wikipedia has a good introduction on 3-way merge