我想要嵌套2 git repos。我一直在阅读子模块,有一段时间我认为这很棒,我想我可能想要别的东西。这是我的情况:
首先,我想我应该提到我的所有服务器都托管网站,并以staging.domain.com和domain.com(实时)模式进行设置。
在每个服务器中,我有一个父级仓库,一个网站和一个子仓库,它是我的核心库。我需要我的核心在我的所有服务器上都是一样的,但网站repos对于他们所居住的服务器来说都是独一无二的。我想对核心进行更改,同时推送到所有临时域,然后进行一些质量保证,并推送到所有实时服务器。
我最初虽然子模块可以满足我的需求,但我遇到的问题是我需要核心一次更新所有内核。如果我使用子模块,我的核心将更新,但在父网站运行git submodule update和git commit之前不会生效。
我想为什么不只是使用gitignore来忽略核心所在的文件夹并将它们视为独立的实体。还有其他人这样做过吗?我会遇到什么问题?你有更好的建议吗?
提前谢谢。
答案 0 :(得分:2)
您的登台服务器上的接收后提交似乎可能会受益,您可以:
git submodule update
cd
到一个服务器网站/path/staging/site1
GIT_DIR=/path/staging/site1/.git WORK_TREE=/path/staging/site1/.git git submodule update
这个想法将是:
答案 1 :(得分:2)
您可以使用git-subtree(Sample of usage)
代替子模块答案 2 :(得分:0)
这取决于您是否希望父回购上的“git status”返回repo是干净的。如果你可以在父回购中使用“git status”,返回类似“Untracked files:... core-libraries /”的内容,那么你可以将core-libraries repo作为父回购的未跟踪子项。
Git真的不关心未跟踪文件&目录。