Git Submodule使用总结

最后编辑于 2021-03-10

我在将博客源码上传到Github时遇到这样一个问题:

hugo使用的主题是作者发布在github上的,我将主题fork之后作了一些修改。可以发现主题相当于另一个项目,可以单独修改和push,很符合git submodule的使用情景,所以hugo在文档里添加主题的地方都使用了git的submodule。但submodule在windows里使用有一些坑,在这篇博客里记录一下


一开始尝试多个主题,后面需要删除很多submodule,将submodule删除干净的方法如下:

  1. 删除包含该submodule的文件夹
  2. git submodule deinit -f -- a/submodule
  3. 删除.git/modules里面的对应的submodule
  4. git rm -f path/to/submodule
  5. 删除在.git/config里面对应的内容
  6. 删除该submodule在.gitmodules里对应的内容

添加submodule的方法:git submodule add <URL> <Path>

fatal: No url found for submodule path ’themes/archie’ in .gitmodules 解决方法

推测是跟windows路径格式有关,将.gitmodules的路径格式改为:

1
2
3
[submodule "themes/archie"]
	path = themes/archie
	url = https://github.com/tomial/archie.git

clone项目时先clone主项目,这时候submodule目录是空的,再运行:

1
2
git submodule init
git submodule update

即可把submodule的内容拉下来


参考资料:

How do I remove a submodule?

Git - 子模块