为什么合并需要考虑共同祖先?

发布于 2024-10-28 21:56:12 字数 645 浏览 5 评论 0原文

我正在学习 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

前事休说 2024-11-04 21:56:12

(我犹豫是否要问这是否是愚人节,我不想侮辱任何人......)

也许你不明白这是 git 进行合并 你?

问题:这是D和E,你能告诉我F应该是什么样子吗?

D                                        E
using System;                            using System;
public void main()                       public void main()
{                                        {
     Console.WriteLine("hello world");        Console.WriteLine("Hello world!");
}                                        }

答案:不,你不能

但是,如果你知道 B 看起来像这样:

B
using System;
public void main()
{
     Console.WriteLine("hello world");
}

它变得毫无疑问,并且 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?

D                                        E
using System;                            using System;
public void main()                       public void main()
{                                        {
     Console.WriteLine("hello world");        Console.WriteLine("Hello world!");
}                                        }

Answer: No, you can't

However, if you know that B looked like this:

B
using System;
public void main()
{
     Console.WriteLine("hello world");
}

It becomes a no brainer, and git can handle this on its own.

Dunno if that answers your question...

风筝有风,海豚有海 2024-11-04 21:56:12

这只是因为如果您知道共同祖先,合并效果会更好。请参阅此答案< /a>,它有很好的解释。

This is simply because merging works better if you know the common ancestor. See this answer, it has good explanation why.

不爱素颜 2024-11-04 21:56:12

维基百科有一个关于三向合并的很好的介绍

Wikipedia has a good introduction on 3-way merge

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文