应该使用哪一个来隐藏微提交?
唯一的区别是git merge --squash
和git merge --no-ff --no-commit
其他父母的否认吗?
应该使用哪一个来隐藏微提交?
唯一的区别是git merge --squash
和git merge --no-ff --no-commit
其他父母的否认吗?
这些选项存在用于不同目的。您的存储库最终会有所不同。
假设您在主题分支上完成开发后,您的存储库是这样的:
--squash
如果你 checkout 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 分支 - 什么是分支。