我们已经使用cvs2git将9年前的CVS回购移植到Git。在一段时间内,我们最终离开了主干(在cvs世界中),并将其中一个分支作为生产(prod_br)。没有多少人这样,但过去已经过去了:))
现在我们已将它转换为Git,我们有两个选项(基于之前对stackoverflow的响应):
将生产分支(prod_br)中的更改移至master并使用新主服务器重新开始并继续。 (git checkout prod_br,git merge -s our master,git checkout master,git merge prod_br)
将prod_br重命名为master并从此处继续。 (git branch -m prod_br master)
上述两种方法有什么区别?任何利弊。
我们也有第三种选择:保持当前的主人不变,并继续在prod_br之上构建。这与主人的回购有关,将来永远不会使用。这也就像prod_br是“我们的逻辑大师”。拥有一个永远不会被用作主人的主人的回购有什么不利之处吗?
感谢任何帮助/指导。
答案 0 :(得分:3)
上述两种方法有什么区别?
第一种方法可能会创建一个合并提交,从历史的角度来看会很好,因为在转移到主服务器时会很清楚。
当您执行merge回到master时,作为确保合并提交的最佳做法,您可能希望使用--no-ff
(无快进)选项:
git merge --no-ff prod_br
至于第二个选项,重命名分支可以工作但不会像merge-commit那样自我记录,更重要的是会导致你需要强制推送可能会破坏其他用户的更改。(他们需要做一个rebase或其他操作才能通过遥控器再次访问他们的分支版本)
与主人的回购有没有任何不利之处 永远不会被用作主人?
并非真正的缺点,但在Git中,惯例是让您的主要生产分支为master
。因此,如果您使用master
,您的存储库对于加入项目的其他人来说似乎更为标准。此外,当他们默认克隆时,他们将被放在主人身上(除了--branch
选项)所以这将少记一步(切换到ad-hoc生产分支)。
IMO像这样的重要操作需要自我记录合并提交,所以我认为选项1是最好的方法。