Git怎么横向管理多个版本?

问题描述

现在有这样的需求:
有一个软件, 这个软件有好几个版本,这些版本之间的差异很小,
也就是说,这几个版本大部分代码是相同的,
也有小部分的代码是不同的。

重点是:
出现了一个问题,这个问题出现这些程序的公共部分,
我能不能有一种办法,
只修改一次,
让所有的版本都改变
但是保持原来版本不同的地方。

问题出现的平台版本及自己尝试过哪些方法

(1) 提取出公共的部分,提取就是一个大问题。

最后,我发现我的需求是有点矛盾,但是,我还是想和大家一起讨论一下,

感谢

阅读 3.5k
4 个回答

题目中你说抽取公共部分很难,估计是公共部分在所有项目中可能都已经改动过了,并且改动未知,短期内唯一可行的方法就是使用git cherry-pick方式将改动合并到各个分支,并手动解决冲突。

从长远看,Feng_Yu已经给出理论上的最佳方案,即将公共部分提取出来放于单独的一个项目中。然后所有其它项目通过SubModule(子模块)的形式引用这个项目。

我一个不是那么正规的方法,算是快刀斩乱麻的方法,比如有 A B C 三个版本

  1. 随便选一个 版本 出来 如A, 从A拉三分支A' B' C'
  2. 其它 (B , C) 都与这个 A 做对比,把B,C差异文件都打包出来(archive + diff 命令)
  3. 把差异文件分别覆盖到 B' C' 并 commit 一次
  4. 测试 B' C' 分支是否正常,
  5. 从A拉一个分支 base .

以后公共部分改 base 再, 差异部分改 A' B' C'
附: 打差异包教程

没看到具体问题,不过似乎一个核心分支+若干个分支 rebase 也是可行的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进