我创建了一个仓库:
然后创建子模块。
在看起来像是干净的克隆版本的最后,我遇到了这个问题。
尝试在子目录中使用git submodule add和git submodule update会得到相同的结果。我最终得到了所有基本文件,但是子目录为空。在服务器上,git log显示了基础文件+子模块的提交记录,并且基础和子模块的git状态都显示为“clean”。
附言:
我删除了所有内容,然后再次尝试将子模块创建更改为:
在本地机器上进行克隆时,当到达子模块部分时会产生相同的错误。因此,我更改了.gitmodules文件(然后执行了git submodule sync),如下所示:
阅读(许多)不同的工作流建议,我发现自己不确定(a)每个.gitmodules文件应该包含哪些内容(我假设服务器上的那个是正确的),(b)将超级库推送到服务器上的裸仓库是否应该是唯一的裸仓库,还是子模块也需要一个(我认为一旦将子模块提交到超级库中,将超级库推送到裸仓库(origin)也会带上子模块历史记录),以及(c)本地子模块是否需要定义远程(在服务器上似乎没有出现这种情况,所以我在本地也没有这样做)。
git init --bare myrepo.git
然后在同一台服务器上,为生产环境创建了仓库。
cd /home/myuser/public_html
git init
git remote add origin /usr/local/gitroot/myrepo.git
git commit --allow-empty -m "Initial commit"
然后创建子模块。
cd subdirectory
git init
git add .
git commit -m "Initial submodule commit"
cd ..
git submodule add /home/myuser/public_html/subdirectory subdirectory
git add .
git commit -m "Initial commit of base files and submodule"
git push origin master
然后在我的本地机器上
git clone --recursive ssh://user@mydomain/path/to/git mygitdirectory
在看起来像是干净的克隆版本的最后,我遇到了这个问题。
fatal: repository '/home/myuser/public_html/subdirectory' does not exist
Clone of '/home/myuser/public_html/subdirectory' into submodule path 'subdirectory' failed
尝试在子目录中使用git submodule add和git submodule update会得到相同的结果。我最终得到了所有基本文件,但是子目录为空。在服务器上,git log显示了基础文件+子模块的提交记录,并且基础和子模块的git状态都显示为“clean”。
附言:
我删除了所有内容,然后再次尝试将子模块创建更改为:
git submodule add ./subdirectory ./subdirectory
这导致了服务器上的一个 .gitmodules 文件
[submodule "subdirectory"]
path = subdirectory
url = ./subdirectory
在本地机器上进行克隆时,当到达子模块部分时会产生相同的错误。因此,我更改了.gitmodules文件(然后执行了git submodule sync),如下所示:
[submodule "subdirectory"]
path = subdirectory
url = ssh://user@mydomain/path/to/git
阅读(许多)不同的工作流建议,我发现自己不确定(a)每个.gitmodules文件应该包含哪些内容(我假设服务器上的那个是正确的),(b)将超级库推送到服务器上的裸仓库是否应该是唯一的裸仓库,还是子模块也需要一个(我认为一旦将子模块提交到超级库中,将超级库推送到裸仓库(origin)也会带上子模块历史记录),以及(c)本地子模块是否需要定义远程(在服务器上似乎没有出现这种情况,所以我在本地也没有这样做)。