//为了清晰而编辑
有没有办法实际或理论上合并两个提交并保留它们之间的所有不同内容。
假设您有一个名为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');
无论如何这是可以实现的吗?
答案 0 :(得分:0)
你的图表令人困惑,而且他们并没有公正地指出你想要做的事情。您的基本问题是,您可以保留两个功能分支中的所有提交,以便它们出现在创建它们的master
分支中。 Git有一个用于执行此操作的工具,它被称为git rebase
。请考虑以下情形:
master: A -- B -- C
branch1: A -- B -- D
branch2: A -- B -- E
在此示例中,branch1
和branch2
在提交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
现在可以使用branch1
将master
推送到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
分支拥有两个分支的所有提交。