2017-07-27 95 views
0

我在本地分支上工作,并推送了10个提交。 现在我想将这些提交合并到master分支,但它必须只包含一个包含所有10个提交的提交。合并本地分支到主分支的代码,但作为单个提交

我读过关于rebasing但是据我可以告诉它重写本地分支的历史。

+0

您正在寻找rebase + squash。 –

回答

1

这叫做壁球合并。但它并不是一个真正的合并:合并 - 更确切地说,一个合并提交,将“合并”用作形容词,或者当我们将它缩写为“合并”时,将其作为名词 - 是提交两个(甚至更多,但两个都需要)提交,因此加入了两个早期的分歧历史。 Git中的“squash merge”使用普通的单亲提交,使用所有合并的动作 - “合并为动词” - 定期合并将会执行,但故意无法将结果记录为合并。

换句话说,合并作为一种动词,却得到了一个不合并作为一种名词普通提交其结果是,你使用Git的“壁球合并”:

git merge --squash <otherbranch> 

这可以完成合并的所有工作,但会进行一次普通的提交。

除了出于某种原因,--squash开启--no-commit自动,使壁球动作完成后,你必须自己运行git commit

(可以使用--no-commit没有--squash,得到同样的“暂停合并作为一种动词后”的效果。你在这种情况下做出的承诺是一个真正的合并提交。)

注意,一旦你做了一个压倒性的普通提交,在你被压扁的分支上做更多的工作很少有好处。放弃(并最终删除)该分支通常是最明智的。

+0

谢谢,并为延迟抱歉! –

相关问题