我在本地分支上工作,并推送了10个提交。 现在我想将这些提交合并到master分支,但它必须只包含一个包含所有10个提交的提交。合并本地分支到主分支的代码,但作为单个提交
我读过关于rebasing但是据我可以告诉它重写本地分支的历史。
我在本地分支上工作,并推送了10个提交。 现在我想将这些提交合并到master分支,但它必须只包含一个包含所有10个提交的提交。合并本地分支到主分支的代码,但作为单个提交
我读过关于rebasing但是据我可以告诉它重写本地分支的历史。
这叫做壁球合并。但它并不是一个真正的合并:合并 - 更确切地说,一个合并提交,将“合并”用作形容词,或者当我们将它缩写为“合并”时,将其作为名词 - 是提交两个(甚至更多,但两个都需要)父提交,因此加入了两个早期的分歧历史。 Git中的“squash merge”使用普通的单亲提交,使用所有合并的动作 - “合并为动词” - 定期合并将会执行,但故意无法将结果记录为合并。
换句话说,合并作为一种动词,却得到了一个不合并作为一种名词普通提交其结果是,你使用Git的“壁球合并”:
git merge --squash <otherbranch>
这可以完成合并的所有工作,但会进行一次普通的提交。
除了出于某种原因,--squash
也开启--no-commit
自动,使壁球动作完成后,你必须自己运行git commit
。
(可以使用--no-commit
没有--squash
,得到同样的“暂停合并作为一种动词后”的效果。你在这种情况下做出的承诺是一个真正的合并提交。)
注意,一旦你做了一个压倒性的普通提交,在你被压扁的分支上做更多的工作很少有好处。放弃(并最终删除)该分支通常是最明智的。
谢谢,并为延迟抱歉! –
您正在寻找rebase + squash。 –