Git merge自动添加所有新行

时间:2016-01-28 13:15:41

标签: git merge git-merge

//为了清晰而编辑

有没有办法实际或理论上合并两个提交并保留它们之间的所有不同内容。

假设您有一个名为index.js

的单个文件的主分支
//master
//index.js
alert('A');
alert('Z');

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

//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');

无论如何这是可以实现的吗?

1 个答案:

答案 0 :(得分:0)

你的图表令人困惑,而且他们并没有公正地指出你想要做的事情。您的基本问题是,您可以保留两个功能分支中的所有提交,以便它们出现在创建它们的master分支中。 Git有一个用于执行此操作的工具,它被称为git rebase。请考虑以下情形:

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

在此示例中,branch1branch2在提交master处分支B,从那时起两者都有一个额外的提交。 rebase上的以下命令将branch1 master,从而在保留所有提交的同时从master引入更改:

git checkout branch1
git rebase master

现在图表看起来像这样:

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

现在可以使用branch1master推送到git push origin branch1: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分支拥有两个分支的所有提交。