我们目前有一个相当大的带有子模块的 git 存储库(大约 10GB),从服务器克隆它需要相当长的时间。我想在我们的项目目录中保留一个本地副本,并将其用作构建的来源。项目目录存储在安装了 NFS 的驱动器上。
当使用 --local 或/path/to/repo 进行克隆时,Git 会建立到原始存储库的硬链接(hard link),但它似乎不会为子模块存储库建立硬链接(hard link)。我早该想到
git clone --local --recursive /path/to/origin mycopy
为所有 repo 创建硬链接(hard link)。我可以告诉 git 也对子模块使用硬链接(hard link)吗?
最佳答案
我不认为这可以通过 buildin 命令来完成,但是你可以在 git submodule init
(或等效的)命令之前修改 .gitmodules
文件并且稍后恢复原样:
git clone --local /path/to/origin mycopy
sed -i '/path = /{h;s,.* = ,,;x};/url = /{s, = .*, = /path/to/origin,;G;s,\n,,}' mycopy/.gitmodules
git -C mycopy submodule update --init
git -C mycopy checkout -- .gitmodules
关于git - 是否可以硬链接(hard link)本地 git 子模块存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021096/