将代码从本地分支合并到主分支,但作为单个提交

时间:2017-07-27 18:33:43

标签: git

我在当地分公司工作,我推了10次提交。 现在我想将这些提交合并到master分支,但它必须只是一个包含所有10个提交的提交。

我读过关于变基的内容,但据我所知,它在当地分支机构重写历史。

1 个答案:

答案 0 :(得分:1)

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

换句话说,要合并动词,但得到一个非合并作为名词的普通提交作为结果,你使用Git的“壁球合并”:

git merge --squash <otherbranch>

这会完成合并的所有工作,但随后会进行普通提交。

除了由于某些原因,--squash 会自动启用--no-commit,以便在压缩操作完成后,您必须自己运行git commit。< / p>

(您可以使用--no-commit而不使用--squash来获得相同的“在合并动词之后暂停”效果。在这种情况下您提交的是真正的合并提交。)

请注意,一旦你进行了一次普通的提交,在你压扁的分支上做更多的工作几乎没有任何好处。放弃(并最终删除)该分支通常是最明智的。