我在当地分公司工作,我推了10次提交。 现在我想将这些提交合并到master分支,但它必须只是一个包含所有10个提交的提交。
我读过关于变基的内容,但据我所知,它在当地分支机构重写历史。
答案 0 :(得分:1)
这称为壁球合并。但它并不是真正的合并:合并 - 更准确地说,是一个合并提交,“merge”用作形容词,或者当我们将其缩写为“合并”时作为名词 - 是一个提交有两个(甚至更多,但两个就是它需要)父提交,因此加入两个早期的不同历史。 Git中的“squash merge”使用所有合并动作 - “合并为动词”进行普通的单父提交 - 定期合并会做,但故意无法记录结果作为合并。
换句话说,要合并动词,但得到一个非合并作为名词的普通提交作为结果,你使用Git的“壁球合并”:
git merge --squash <otherbranch>
这会完成合并的所有工作,但随后会进行普通提交。
除了由于某些原因,--squash
还会自动启用--no-commit
,以便在压缩操作完成后,您必须自己运行git commit
。< / p>
(您可以使用--no-commit
而不使用--squash
来获得相同的“在合并动词之后暂停”效果。在这种情况下您提交的是真正的合并提交。)
请注意,一旦你进行了一次普通的提交,在你压扁的分支上做更多的工作几乎没有任何好处。放弃(并最终删除)该分支通常是最明智的。