一套省平台的源代码,如何针对不同省份,如何管理源代码,实现差异化开发?

目前开发了一个省级平台的项目,现在需要向其他省份推广,需求如下:
1、系统主要功能是共用的,一次修改发布,各省都要生效。
2、个别定制化功能,按有需求的省份打包。

我感觉可以从Git来控制代码分支的思路来解决,因为我没有用过Git,只是简单的使用SVN单分支来管理源代码,不是很确定。所以请教各位大神,Git的方式是否可以,或者有其他更好的建议?

用分支来管理效率并不高。建议一套代码,用不同的目录实现不同省份差异化的功能,用一个公共目录实现代码的共用部分。通过配置文件选择运行同省份的代码。打包发布也是一样,每个省份对应一个打包脚本,打包输出不同的可执行文件、动态库等。

条件编译、插件化架构、将文本等做成资源(resource)
单文件结构,多makefile(或者eclipse 项目工程)
有很多的办法

这个用git直接就可以搞定。说下具体的操作
1、把系统主要功能开发好之后提交到master,后面如果开发了新的功能都直接提交
到master【注意:只有主功能的代码可以提交,不允许其它省份定制化的代码提交】。
2、有很多省,拿湖北省举一个例子,进入到master,fork一个分支到自己的分支。
如果已经有过这个分支了,那么先把本地的代码保存起来,也就是不动。然后把自己
fork的分支删除,重新fork一下master的代码。
3、然后在本地的代码里进行拉取同步操作,git pull。
4、拉取完代码后应该就有了主功能新加的代码,如果有冲突需要解决冲突。
5、然后把本地的代码提交到自己的分支,执行git commit。
6、然后把代码推送到自己的分支,执行git push。
7,到这里就结束了。千万不要把自己的代码在request到master上。

上面是第一种操作也是最简单的操作。
第二种可以每次把主分支的代码下载下来直接替换本地的主分支代码,这里需要一些技巧,
例如系统主要的功能都在common包下,其余other里面的各个省的就分各个省的名字来管理。