Git合并自动添加所有新行



//为清晰而编辑

有没有任何方法可以实际或理论上合并两个提交,并在它们之间保留所有不同的内容。

假设您有一个主分支,其中有一个名为index.js 的文件

//master
//index.js
alert('A');
alert('Z');

master的两个分支看起来像这样:

//Branch 1
//index.js
alert('A');
alert('B');
alert('Z');
//Branch 2
//index.js
alert('A');
alert('C');
alert('Z');

合并分支1到分支2的理想自动合并结果是

//Branch 2
//index.js
alert('A');
alert('B');
alert('C');
alert('Z');

这是可以实现的吗?

您的图表令人困惑,而且它们不能公正地表达您想要表达的观点。您的基本问题是,您能否在两个功能分支中保留所有提交,以便它们出现在创建它们的master分支中。Git有一个工具可以做到这一点,它被称为git rebase。考虑以下场景:

master:  A -- B -- C
branch1: A -- B -- D
branch2: A -- B -- E

在本例中,branch1branch2都在提交B时从master分支,并且从那时起都有一个额外的提交。以下命令将在masterrebasebranch1,从而在保留所有提交的同时引入master的更改:

git checkout branch1
git rebase master

现在,图表将如下所示:

master:  A -- B -- C
branch1: A -- B -- C -- D'
branch2: A -- B -- E

现在,可以使用git push origin branch1:masterbranch1推送到master上,留下如下图:

master:  A -- B -- C -- D'
branch1: A -- B -- C -- D'
branch2: A -- B -- E

还可以对branch2进行重新调整,这将使图看起来像这样:

master:  A -- B -- C -- D' -- E'
branch1: A -- B -- C -- D'
branch2: A -- B -- C -- D' -- E'

现在,您的master分支拥有来自两个分支的所有提交。

最新更新