Git:将本地git子模块(包括子模块文件)推送到远程裸存储库

时间:2018-02-22 20:37:55

标签: git git-submodules git-remote git-bare

我有两个本地项目,我使用git管理,一个依赖于另一个 - 像这样:

project A/
├── project B/     
│   ├── file B₁
│   ├── file B₂
│   ├── …

project B作为project A的git子模块对我有意义。

现在,我为project A设置了一个远程存储库,用于备份和共享。当然,我希望远程存储库包含所有project B,包括其文件(file B₁file B₂,...)。但是git pushgit push --recurse-submodules=on-demand没有实现这一目标。每当我通过git ls-tree -r HEAD列出我的远程存储库中的文件时,只会列出project A本身的文件。这个 对我有意义。

但是,有没有办法以某种方式将整个子模块project B推送到我的远程基础存储库,最好以干净的方式?

2 个答案:

答案 0 :(得分:0)

子模块必须有一个单独的存储库。创建一个新的裸仓库并将子模块推送到它。

答案 1 :(得分:0)

如果B实际上是一个子模块,你应该有一个引用它的.gitmodule 在那个.gitmodule文件中,如果B中有任何新的提交,你会看到推送B的远程仓库URL。

但是B是子模块意味着A不会有B文件,只有引用到B SHA1。

如果需要,您可以取消子模块B(使用my answerthis one)以便将所有B文件保存在A中。