在主分支 Master 开发到一定阶段后,创建了 A、B、C 三个新分支
四者对应着四个网站,都有相同和不同的地方
有些相同的地方在更新好一个分支后,又需要依次推送到其他分支
有什么解决办法吗?
1
azygote 2017-11-07 17:28:33 +08:00
分支不是这么用的,你的需求可以考虑把整个系统模块化。
|
2
shiina 2017-11-07 17:31:24 +08:00 1
错误的分支使用方式😐
|
3
vikeria 2017-11-07 17:31:38 +08:00
楼上加一
|
4
secends 2017-11-07 17:32:43 +08:00
参考这个命令 git push origin HEAD:master, 看 git help push
|
6
azygote 2017-11-07 17:42:41 +08:00 via iPhone
@iguoji 把整个系统模块化,四个网站可以共用一部分模块,然后四个网站不同的功能用分别开发不同的模块(同一分支下)。如果做不到那还是老老实实分成 4 个 git 仓库吧。
|
7
flowci 2017-11-07 17:47:02 +08:00
一个项目一个仓库,一个项目多个分支。
|
8
cxbig 2017-11-07 17:47:56 +08:00
最好是遵循 Git Flow,且一个项目一个 repo。
共用的部分做成独立模块,用 submodule、cherry-pick 或各语言的包管理器加载 |
9
mooncakejs 2017-11-07 17:49:26 +08:00
如果有不涉及二次开发的公共代码模块,开 4 个项目,用 submodule
4 个项目可以自己选择公共项目的版本,要升级就 update submodule。 开 4 个分支也行,新功能也开分支,然后分别合并到二次开发版本。 |
10
ryd994 2017-11-07 18:34:27 +08:00 via Android
理论上可以在 master 改了再 cherry pick
但是长远来讲可能会很复杂也很危险 还是 submodule 吧,现在跑还来得及 |
11
l8mEQ331 2017-11-07 19:14:05 +08:00
我现在管理的公司的一个 MTK rom 也是这种情况,有多个版本, 每个版本都是一个分支。每次加一些功能或者改东西,有可能是所有版本都要加,有可能是只是某些版本加。现在的做法是用 cherry-pick 来手动的每个版本加上新的功能。
|
12
yidinghe 2017-11-07 20:40:17 +08:00
每个分支一个远程啊……那敲命令太复杂了,装 SourceTree 之类的图形客户端吧。
|
13
satanandroid 2017-11-07 20:54:42 +08:00
公共部分 用 submodule 啊~
|
14
xem 2017-11-07 23:08:14 +08:00
把公共模块单独建立项目,然后再把各个网站单独建立项目,包含各个公共模块项目
|
15
SoloCompany 2017-11-08 00:51:20 +08:00
两个选择
1. 模块化,提取公共抽象为 1~n 个模块( repo ),其余部分每个网站一个 repo 2. 实在不适合模块化,那么就让 4 个网站共用一套代码,通过 domain name 或配置来进行差异化渲染 |
16
colorwin 2017-11-08 01:40:33 +08:00 via Android
可能不是最好的方法但比较简单。从 master 分支切出一个 common 分支,开发好功能好后 merge 到需要该功能的分支
|
17
66beta 2017-11-08 09:02:25 +08:00
你的情况,算是多个 master 分支...
可以把公共代码抽出来放一个文件夹,4 个网站 4 个文件夹,改什么就拉一个 feature 分支,改完合回去,互相不影响 跟你类似的业务情况 vue-cli 分网站(渠道),多页面打包+vue-router,共享基础 JS 库和组件库 打包完后: a.html b.html c.html d.html static(文件夹) |
18
asuraa 2017-11-08 09:11:07 +08:00
|
19
yuhr123 2017-11-08 09:16:35 +08:00
一个站点一个仓库! git 又不是租来的,楼主怎么还舍不得用啊。
小规模多人协作:所有人 dev 分支开发,PR 合并到主仓库 master。 独立开发:本地 master 开发,测试无误 push 到仓库。 本人喜欢拿分支做临时性实验,用后立即销毁,不愿意管理分支,主要是因为懒。 |
20
allce231 2017-11-08 09:53:44 +08:00
你们说开 4 个仓库的脑袋被门夹了?
他们有的需求可能是 4 个分支都要改的,那这样可以在 master 改了合并过去,4 个仓库的每个仓库改一次吗? |
21
crazystory 2017-11-08 10:45:07 +08:00
4 个不同项目放一个仓库才是脑袋被门夹了
|
22
crazystory 2017-11-08 10:46:10 +08:00
何况公共部分可以用 submodule 只改一个仓库就行了
|
23
zjsxwc 2017-11-08 13:16:31 +08:00
可以同一个分支搞 4 个入口对应 4 个网站不就解决楼主的问题了吗, 其实 4 个网站就是 4 个 feature, 合并后每个分支也都应该有这个 4 个 feature
|
24
i2000s 2017-11-08 15:58:28 +08:00
推荐用不同的库做不同的网站,各个库可以使用同一个域名。
比如我的网站主库在 github.com/i2000s/i2000s.github.io,英文页面在 github.com/i2000s/en,中文网站在 github.com/i2000s/cn。他们共用一个域名,应为站点在 /en 目录,中文的在/ cn 目录。各个站点间实际上都是来源于主站的代码,理论上可以 fork,但是我只是添加了主站地址作为各个站点的 remote,这样核心站点代码有更新后,可以方便 push 到其他站点。仅供参考。 |
25
yuriko 2017-11-08 16:57:29 +08:00
1.建议共用代码,通过不同网站的配置去决定怎么运作
2.实在要分开处理,那么 git 命令的 origin 字段就是指的远程主机,除去 origin 给每个主机定一个对应的别名,操作的时候带上就能 push 到对应的机器了 由于 git 本质是个分布式代码仓,三台主机各不相同,再加上本地开发困难,如果不另设一个服务器汇总做基准,估计会乱爆炸。 3.模块化,每个模块开一个仓,不同站点用不同仓的组合。Google 做 Android 的时候用的工具叫 repo,每个 repo 仓可以根据需要组合对应的 git 仓,比如 repoA ( gitA、gitB ),repoB ( gitA、gitC )这样 |