git仓库子模块下载失败怎么办

如何在clone和pull时带上子模块

对于有子模块的部分clone和pull时应该加上 --recurse,

按照手册Git - git-clone Documentation (git-scm.com),应该使用 --recurse-submodules

而实测--recurse也是可以的

比如obs项目:

git clone --recursive https://github.com/obsproject/obs-studio.git

子模块的定义在哪里 

obs项目目录下有一个.gitmodules文件描述了相关子模块

[submodule "plugins/win-dshow/libdshowcapture"]
	path = plugins/win-dshow/libdshowcapture
	url = https://github.com/obsproject/libdshowcapture.git
[submodule "plugins/mac-syphon/syphon-framework"]
	path = plugins/mac-syphon/syphon-framework
	url = https://github.com/palana/Syphon-Framework.git
[submodule "plugins/enc-amf"]
	path = plugins/enc-amf
	url = https://github.com/obsproject/obs-amd-encoder.git
[submodule "plugins/obs-browser"]
	path = plugins/obs-browser
	url = https://github.com/obsproject/obs-browser.git
[submodule "plugins/obs-vst"]
	path = plugins/obs-vst
	url = https://github.com/obsproject/obs-vst.git
[submodule "plugins/obs-outputs/ftl-sdk"]
	path = plugins/obs-outputs/ftl-sdk
	url = https://github.com/Mixer/ftl-sdk.git

如果clone时忘了下子模块怎么办

执行

git.exe submodule update --init

或者在Tortoise Git右键菜单->Git Sync中选择Submodule Update

如果clone子模块失败时怎么办

执行下上节的update,直到没有出错信息,此时可以用以下指令查到各子模块的状态

git.exe submodule status

C:\GitHub\obs-studio>git.exe submodule status
 9a08b071dfefc6cfb7e974a8b29898a79d668ca0 plugins/enc-amf (2.6.0-13-g9a08b07)
 01b144811f6f7080b70b2d7cc729da071f86f9d7 plugins/mac-syphon/syphon-framework (heads/master)
 dd3d7eb2ad99c1aebe7c3c6a37f411c080c7fcdf plugins/obs-browser (2.16.3-21-gdd3d7eb)
 d0c8469f66806b5ea738d607f7d2b000af8b1129 plugins/obs-outputs/ftl-sdk (v0.9.14-8-gd0c8469)
 6ebb4f5e8e42ab5cc011bedf937a2127d1816bee plugins/obs-vst (heads/master)
 5ac25cba2e90e617293c373bcc3ce59e46197bef plugins/win-dshow/libdshowcapture (heads/master) 

不过此时目录下还是空空如也,细节可以参考下节

如果update完以后目录下还空空如也怎么办

 具体原因并不清楚,但是状态是子模块的文件都被删除了

C:\GitHub\obs-studio>git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)
        modified:   plugins/mac-syphon/syphon-framework (modified content)
        modified:   plugins/obs-outputs/ftl-sdk (modified content)

no changes added to commit (use "git add" and/or "git commit -a")

 这个时候只要跑到子目录去revert掉相关子模块的修改即可,

注意:在项目根目录直接revert是无效的,需要到子目中revert才开;在子模块目录上右击选择Tortoise Git右键菜单->revert

至于子模块的位置,可以根据git status的结果来查看;也可以根据本文中“子模块的定义在哪里”章节的内容查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值