这是我想要的:
REPO-A
/.git
/otherFiles
/REPO-B
/.git
/moreFiles
我希望能够将所有的REPO-A内容推送到REMOTE-A而仅将REPO-B推送到REMOTE-B。
可能的?
答案 0 :(得分:83)
听起来你想使用Git submodules。
Git使用子模块解决了这个问题。子模块允许您将Git存储库保存为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到项目中,并使您的提交保持独立。
答案 1 :(得分:54)
我一直使用符号链接来维护两个独立且不同的回购。
答案 2 :(得分:23)
是的,您可以使用您绘制的文件层次结构完全按照要求执行操作。 Repo-B将是独立的,不了解Repo-A。 Repo-A将跟踪其自身文件和Repo-B文件中的所有更改。
但是,我不建议这样做。每次更改文件并在Repo-B中提交时,您都必须在Repo-A中提交。 Repo-B中的分支将混乱Repo-A并且Repo-A中的分支将是不稳定的(无法删除文件夹等)。子模块绝对是最佳选择。
答案 3 :(得分:3)
您可以使用父
setInterval(function(){
if(woodChopingWorkers >0){
resources.wood += (woodChopingWorkers*multiplier)/10;
console.log(resources.wood);
}
}, 100)
存储库中的 .gitignore
文件(忽略 A
),但首先要确保当前未跟踪 B
存储库:提交添加第二个 B
存储库之前的父 .gitignore
。
答案 4 :(得分:2)
您可以使用“ git-subrepo”来实现所需的功能(该REPO-A repo包含所有文件,包括REPO-B文件夹中的文件,而不仅仅是引用):
https://github.com/ingydotnet/git-subrepo
如果您的某些贡献者未安装subrepo命令,它仍然可以工作;他们将看到完整的文件夹结构,但无法将更改提交到子仓库。
答案 5 :(得分:1)
多种选择,最好的选择取决于您的目的:
如果想让父级作为不同应用程序的容器,并且其中一些最终可能成为repos,只需使用裸Git将它们视为不同的存储库(没有子模块没有子存储库)。无需了解更多 git 功能。
如果您想将父级保留为不同repo 的“项目”,并且在管理不同协作者的访问时感到安全,则对不同的 repo 文件夹使用符号链接的解决方案是不错的选择。同样,无需学习更多 git 功能。
说明:
如果其中一个应用程序成为一个存储库,只需 git init
在那里,添加远程存储库并忘记 git 教程并将这些时间花在应用程序上。它只是工作,并且在父存储库中,其余应用程序的提交仍然可以是原子的,有时会有额外的提交,是的,但是您不需要为每次提交提交 parentA回购B.您可以对两个 repo 应用不同的权限(尽管父级可以拥有 repoB 代码,除非您使用 .gitignore 忽略 repoB)。