我目前的模式是merge
在完成后将主题分支放到我的主要开发分支中。日志最近看起来有点疯狂,我正在考虑改用使用rebase
。
rebase
使用而不是merge
主题/功能分支可能有哪些缺点?
我目前的模式是merge
在完成后将主题分支放到我的主要开发分支中。日志最近看起来有点疯狂,我正在考虑改用使用rebase
。
rebase
使用而不是merge
主题/功能分支可能有哪些缺点?
使用 rebase 的主要缺点是你应该(必须)只在本地使用 rebase。也就是说,一旦某个东西被推送,之后就不要再变基了。重写历史很好而且很花哨,但是当你开始在遥控器上搞砸历史的那一刻,事情变得非常混乱。
编辑
另一个缺点是真实的历史实际上已经丢失了。这意味着,除其他外,不可能(轻松地)回到主题分支,因为它看起来像是主分支的一部分。它还使还原更改更加痛苦,因为您必须一次挑选一个提交,尽力记住哪些来自原始主题分支。如果你使用交互式 rebase,或者更糟——压缩你的提交——那么这可能是一个非常令人头疼的问题。
缺点包括在开发过程中的修订与它们的实际状态不匹配,失去使用类似标志隐藏合并之间提交的能力--first-parent
,以及如果您打算稍后重新设置分支,则难以共享您的分支。如果您的日志看起来很疯狂,请git help log
再次查看。很有可能,有一个标志组合可以让它看起来像你想要的那样,而不会在需要时牺牲灵活性。
另一个原因:通常更难解决冲突。如果您在一个功能中有多个提交,您可能多次更改了相同的代码。如果发生冲突,您将不得不多次修复它。通过合并,您只需执行一次。