【发布时间】:2021-03-08 17:01:30
【问题描述】:
刚刚创建了一个包含两个子模块的新存储库。它在本地运行良好,但在推送到生产环境时,子模块不存在。每个子模块根目录都存在,但里面没有文件
git version 2.27.0
在生产环境中创建仓库
git --bare init
cd hooks && touch post-receive && chmod +x post-receive
cat hooks/post-receive
#/bin/sh
git --work-tree=/var/www/repo --git-dir=/var/git_repos/repo.git checkout -f
从 dev/local 推送到生产环境
git push production master
git status 表示一切都是最新的。即使在子模块文件夹中调用它。已尝试删除本地存储库上的子模块文件夹,提交/推送到存储库。然后git push production master 和根子模块文件夹在生产服务器上被删除。然后尝试再次添加它
# git submodule add git@github.com:alias/repo_name.git php/repo/repo_name
Cloning into '/var/www/project/php/repo/repo_name'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 19 (delta 8), reused 19 (delta 8), pack-reused 0
Receiving objects: 100% (19/19), 8.62 KiB | 8.62 MiB/s, done.
Resolving deltas: 100% (8/8), done.
然后提交到存储库,然后是 git push production master 。同样的问题。在生产中,子模块的根文件夹存在,但目录中没有文件。
当我浏览 github 上的存储库时,子模块已正确链接。
一切都在本地存储库中工作
【问题讨论】:
-
添加子模块后,仅克隆是不够的。
git submodule init和git submodule update也是需要的。 -
这能回答你的问题吗? Empty Git submodule folder when repo cloned
-
我假设生产 repo 不是这里的裸存储库,并且您正在通过克隆检查它(从外观上看)。如果没有,请提供更多详细信息。
-
我不是克隆而是推向生产
-
如何检查生产仓库的内容?