multiple git repositories cloned into the same directory
我已经为我的项目建立了一个标准存储库
1 | /home/repo/.git |
这是我克隆的存储库,用于获取新网站的基本代码
即我将其克隆到
1 | /var/www/site1 |
我还有一些我作为存储库创建的模块,有些网站将使用这些模块,有些则不会。
1 2 | /home/modules/mod1/.git /home/modules/mod2/.git |
有没有一种方法可以将这些模块克隆到同一站点文件夹中?
1 | /var/www/site1 |
模块目录设置为与主仓库相同的文件夹结构,当我将其克隆到主仓库克隆之上时,它们应合并/替换现有文件。 (几乎没有文件重叠)
我的最佳解决方案是以某种方式命名存储库,以便在部署新站点时执行以下操作:
1 2 3 4 | cd /var/www/newsite git clone /home/repo/.git git clone /home/modules/mod1/.git git clone /home/moudles/mod2/.git |
,当我要对该网站进行更新时,可以执行以下操作:
1 2 3 | git pull origin master git pull mod1 git pull mod2 |
或优选:
1 | git pull origin master |
还将调用
我一直在查看git子模块和分支,但无法确定它们是否是我所需要的。
建议您对所需的部署命令进行一些细微更改:
1 2 3 4 5 6 7 8 | cd /var/www/ git clone /home/repo/.git newsite git remote add mod1 /home/modules/mod1/.git git remote add mod2 /home/moudles/mod2/.git cd newsite git merge mod1/master git merge mod2/master |
说明:
正如您所说,您的主模块(/ home / repo)与
vcsh工具允许在同一目录中维护多个存储库。
简而言之,您不能让一个git repo成为另一个git的sudirectory。
此规则有一个例外:您可以将一个git repo作为另一个模块的子模块,但这有很多限制和不便。
通常的方法是拥有一个主git repo,它本身没有实际的修道院,但是仅跟踪几个git repos作为其子模块。
或者,我建议为此目的使用由Android项目开发的
从某种意义上说,git子模块和android repo解决了本质上相同的任务,但是使用的方式略有不同。