gpt4 book ai didi

git-submodules - git 子模块内容不与基本 repo 一起克隆

转载 作者:行者123 更新时间:2023-12-02 00:02:51 26 4
gpt4 key购买 nike

我创建了一个仓库:

git init --bare myrepo.git

然后在同一台服务器上,创建用于生产的 repo

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 status 显示干净。

后记

我把一切都搞砸了,然后再次尝试将子模块的创建更改为:

git submodule add ./subdirectory ./subdirectory

在服务器上产生了一个 .gitmodules

[submodule "subdirectory"]
path = subdirectory
url = ./subdirectory

在本地机器上进行克隆时,在到达子模块部分时会导致相同的错误。因此,我将 .gitmodules(然后执行 git 子模块同步)更改为:

[submodule "subdirectory"]
path = subdirectory
url = ssh://user@mydomain/path/to/git

阅读(许多)不同的工作流程建议,我发现自己不确定(a)每个 .gitmodules 的内容应该是什么(我假设服务器是正确的)(b) super 仓库上的远程裸仓库是否推送的服务器应该是唯一的裸仓库,或者子模块是否也需要一个(我假设一旦子模块在 super 仓库中提交,将 super 仓库推送到裸仓库(起源)也会获取子模块的历史记录) , 和 (c) 本地子模块是否需要定义远程(它没有出现在服务器上,所以我在本地没有这样)

最佳答案

您的本地 git 正在尝试使用您最初从中克隆它的远程 URL 来克隆子模块 - 这是服务器上的本地路径,不会存在于您的本地机器上。

尝试通过 SSH 克隆子模块,这样它的远程 URL 就可以在服务器和本地机器上工作。

关于git-submodules - git 子模块内容不与基本 repo 一起克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20260774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com