隐藏微提交应该使用哪一个?
git merge --squash
和git merge --no-ff --no-commit
其他父母之间的唯一区别是吗?
隐藏微提交应该使用哪一个?
git merge --squash
和git merge --no-ff --no-commit
其他父母之间的唯一区别是吗?
Answers:
这些选项的存在是为了分开的目的。您的存储库最终以不同的方式结束。
让我们假设在主题分支上完成开发之后,您的存储库就是这样的:
--squash
如果先结帐master,然后git merge --squash topic; git commit -m topic
得到:
--no-ff --no-commit
相反,如果您这样做git merge --no-ff --no-commit; git commit -m topic
,则会得到以下信息:
如果您确实要隐藏(我的意思是从存储库中删除)您的微提交,请使用--squash
。因为,如您在上述图像中看到的,如果您不挤压,您实际上并没有隐藏您的微型提交。而且,您通常不会将主题分支推向世界。主题分支用于使主题变得成熟。
如果您希望历史记录包含所有的微提交,但又将它们留在其他开发行中(上图中的绿色行),请使用--no-ff --no-commit
。但是请记住,a)这不是分支,b)在Git中并不意味着任何东西,因为它只是提交的另一父项。
如果您真的想了解,请参阅Git分支-什么是分支。
--no-ff
是告诉git“即使可以也不要先转发。而是创建一个合并提交并重用所有现有的提交。”
--no-ff
保留了拆分
--squash
做。是的,您可以将微提交隐藏在开发行中,但这并不意味着如上所述的另一个分支。由于您要将开发分支合并到主分支,因此它将不再是单独的分支。
-no-ff --no-commit
不会隐藏微提交的存在,而--squash
确实存在”,那是唯一的区别,那么我会接受这个答案
-no-ff
,以做皮微提交?-> stackoverflow.com/a/2850413/321973