在另一个git仓库中维护git repo

时间:2011-01-11 15:53:58

标签: git version-control github

这是我想要的:

REPO-A
  /.git
  /otherFiles
  /REPO-B
    /.git
    /moreFiles

我希望能够将所有的REPO-A内容推送到REMOTE-A而将REPO-B推送到REMOTE-B。

可能的?

6 个答案:

答案 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)。