我刚刚继承了一个使用Git维护的项目.有一次,代码被部署到3个独立的系统上,每个系统都维护着自己的分散式Git资源库.
3个系统中的每一个都在3个不同方向上扩展了原始基础系统.3个系统中没有一个系统相互同步.一些更改在主分支上,其他更改在新分支上.
如何将3种不同的来源组合在一起,以便我可以:
找到一个共同的基础;
找出哪些更改是应该在所有3个系统中应用的错误修复; 和
以理智的方式维护3个系统,以便只有一个公共分支,并将3个不同系统所需的自定义分开?
Henrik Gusta.. 13
我可能会首先将所有存储库推送到中央存储库中的单独分支,从中我可以轻松地在分支之间进行rebase,merge等.
一个好的可视化工具,如git-age,gitnub,gitx,giggle可以创造奇迹,但除非你能找到分支点,否则你的任务可能会相当繁琐.如果有类似的补丁应用于所有分支,您可以使用(交互式)rebase重新排序您的提交,使它们的顺序相同.然后你可以开始"拉上"你的分支,通过将提交放入master中来向上移动分支点.有关如何使用rebase重新排序提交的详细说明,请参见此处.
Git Howto Index提供的链接中描述了您需要采取的操作.一个好的备忘单总是很好的触手可及.此外,我怀疑Eric Sinks发布的后续文章" DVCS和DAG,第1部分 "将包含一些有用的东西(它没有,但是仍然是一个有趣的读物).
其他有用的链接有:Git Magic,Git Ready和SourceMage Git Guide
我希望所有的回购都有良好的提交消息,告诉你每个补丁的目的,这是或代码审查:)
至于如何维护自定义,我们运气如下:
我们首先将自定义代码与通用代码分离(或保持分离).然后我们尝试了两种方法; 两者都很好:
所有部署都有自己的存储库,其中保留了自定义.
所有部署都在"自定义"存储库中拥有自己的分支.
在第一次部署并看到第二次是事实后,我们花了一些时间来预测未来的定制/切割点,以减少定制回购(alt.1,这是我们目前使用的方法)和基础/核心的重复回购.
是的,每当我们注意到核心/定制拆分滑倒时,我们都会尝试无情地重构:)
我可能会首先将所有存储库推送到中央存储库中的单独分支,从中我可以轻松地在分支之间进行rebase,merge等.
一个好的可视化工具,如git-age,gitnub,gitx,giggle可以创造奇迹,但除非你能找到分支点,否则你的任务可能会相当繁琐.如果有类似的补丁应用于所有分支,您可以使用(交互式)rebase重新排序您的提交,使它们的顺序相同.然后你可以开始"拉上"你的分支,通过将提交放入master中来向上移动分支点.有关如何使用rebase重新排序提交的详细说明,请参见此处.
Git Howto Index提供的链接中描述了您需要采取的操作.一个好的备忘单总是很好的触手可及.此外,我怀疑Eric Sinks发布的后续文章" DVCS和DAG,第1部分 "将包含一些有用的东西(它没有,但是仍然是一个有趣的读物).
其他有用的链接有:Git Magic,Git Ready和SourceMage Git Guide
我希望所有的回购都有良好的提交消息,告诉你每个补丁的目的,这是或代码审查:)
至于如何维护自定义,我们运气如下:
我们首先将自定义代码与通用代码分离(或保持分离).然后我们尝试了两种方法; 两者都很好:
所有部署都有自己的存储库,其中保留了自定义.
所有部署都在"自定义"存储库中拥有自己的分支.
在第一次部署并看到第二次是事实后,我们花了一些时间来预测未来的定制/切割点,以减少定制回购(alt.1,这是我们目前使用的方法)和基础/核心的重复回购.
是的,每当我们注意到核心/定制拆分滑倒时,我们都会尝试无情地重构:)