我在不同的服务器上有几个跨子域的应用程序。每个应用程序都有自己的Git存储库。每个应用程序都使用几个共享文件。本质上,我的存储库是重叠的。如何最好地处理多个项目的多个编辑器的这种情况?
ui7jx7zq1#
我会尝试将所有重叠的部分制作为git submodules。
t9aqgxwy2#
只要多个项目将他们对子模块的修改推送到共享位置,他们就可以对共享资源进行修改。也就是说,如果其中一个项目需要他们的子模块是“特殊的”,他们就必须对子模块进行分支。https://git-scm.com/book/en/v2/Git-Tools-Submodules这将引导您完成一个包含子模块的超级项目,在超级项目中编辑子模块并将其推回。它还显示了一个危险,即如果您运行git submodule update,并且在master分支上有本地未推送的更改,则会悄悄地覆盖更改。具体来说,在某个地方你有一个共享文件夹'folder' --你需要从所有的git项目中删除它,但是在某个地方创建一个新的git repo,用当前的内容作为初始提交。然后你将在所有共享它的项目中git submodule <repo> folder; git submodule update。它们都可以将更改推送到共享repo,并且可以拉下彼此的更改。
git submodule update
git submodule <repo> folder; git submodule update
vsaztqbk3#
听起来你应该划分公共元素,这样就有了明确的区别,然后使用子模块。确保你清楚地分隔了公共部分,否则你很可能会以一个不可维护的混乱结束。
lx0bsm1f4#
你也可以使用git-subrepo工具。wiki页面是链接的。它基本上是submodule和subtree的改进版本。
submodule
subtree
4条答案
按热度按时间ui7jx7zq1#
我会尝试将所有重叠的部分制作为git submodules。
t9aqgxwy2#
只要多个项目将他们对子模块的修改推送到共享位置,他们就可以对共享资源进行修改。也就是说,如果其中一个项目需要他们的子模块是“特殊的”,他们就必须对子模块进行分支。
https://git-scm.com/book/en/v2/Git-Tools-Submodules
这将引导您完成一个包含子模块的超级项目,在超级项目中编辑子模块并将其推回。它还显示了一个危险,即如果您运行
git submodule update
,并且在master分支上有本地未推送的更改,则会悄悄地覆盖更改。具体来说,在某个地方你有一个共享文件夹'folder' --你需要从所有的git项目中删除它,但是在某个地方创建一个新的git repo,用当前的内容作为初始提交。然后你将在所有共享它的项目中
git submodule <repo> folder; git submodule update
。它们都可以将更改推送到共享repo,并且可以拉下彼此的更改。vsaztqbk3#
听起来你应该划分公共元素,这样就有了明确的区别,然后使用子模块。确保你清楚地分隔了公共部分,否则你很可能会以一个不可维护的混乱结束。
lx0bsm1f4#
你也可以使用git-subrepo工具。wiki页面是链接的。它基本上是
submodule
和subtree
的改进版本。