应该使用哪一个来隐藏微提交?
git merge --squash和 git merge --no-ff --no-commit之间的唯一区别是否是其他父母的否认?
git merge --squash
git merge --no-ff --no-commit
这些选项存在的目的是不同的,存储库的结果是不同的。
让我们假设在完成主题分支的开发之后,您的存储库是这样的:
--squash
如果你先结账,然后是 git merge --squash topic; git commit -m topic,你会得到这样的结果:
git merge --squash topic; git commit -m topic
--no-ff --no-commit
相反,如果你做 git merge --no-ff --no-commit; git commit -m topic,你会得到:
git merge --no-ff --no-commit; git commit -m topic
如果您真的想隐藏(我指的是从存储库中隐藏 删除)您的微提交,那么使用 --squash。因为,正如你在上面的图片中看到的,如果你不压缩的话,你并没有真正隐藏你的微提交。此外,你通常不会把你的主题分支推向世界。主题分支是为了使主题更加成熟。
如果您希望历史记录中包含所有的微提交,但是将它们放在另一条开发线(上图中的绿线)中,那么可以使用 --no-ff --no-commit。但是请记住,a)这不是一个分支,b)在 Git 中实际上没有任何意义,因为它只是提交的另一个父级。
如果你真的想了解,请参考 Git 分支-什么是分支。