git clone --recurse-submodules
命令会记录子模块的绝对路径。
也就是说,当我克隆父目录时,每个子模块的 .git 文件夹中的 gitdir
值都会记录子模块的绝对路径。这使得我无法移动新克隆的目录,否则所有子模块都将无法使用。
在原始仓库中,我首先创建子模块时,.git 文件如下:
gitdir: ../../.git/modules/data/scta-codices
但是,在使用以下命令将其克隆到新目录中后:
git clone --recurse-submodules git@github.com:scta/scta-rdf.git
.git 文件变成了:
gitdir: /Users/username/Desktop/scta-rdf/.git/modules/data/scta-projectfiles
有什么想法吗?
以下是父目录中 .gitmodules 文件的内容:
[submodule "data/scta-projectfiles"]
path = data/scta-projectfiles
url = https://github.com/scta/scta-projectfiles
branch = master
[submodule "data/scta-codices"]
path = data/scta-codices
url = https://github.com/scta/scta-codices
branch = master
[submodule "data/scta-quotations"]
path = data/scta-quotations
url = https://github.com/scta/scta-quotations
branch = master
[submodule "data/lombardpress-lists"]
path = data/lombardpress-lists
url = https://github.com/lombardpress/lombardpress-lists
branch = master
[submodule "data/scta-rdf-schema"]
path = data/scta-rdf-schema
url = https://github.com/scta/scta-rdf-schema
branch = master
[submodule "data/scta-people"]
path = data/scta-people
url = https://github.com/scta/scta-people
branch = master
git submodule init
然后跟着执行git submodule update
会在克隆完成后创建相对路径(但在克隆期间,每个子模块的 .git 文件中都设置了绝对路径)。 - remus