我有一个文件夹,是一个git repo。它包含一些文件和.gitmodules文件。现在,当我执行git init
,然后执行git submodule init
时,后面的命令输出为nothing。如何帮助git在不再次手动运行git submodule add
的情况下查看.gitmodules文件中定义的子模块?
更新:这是我的.gitmodules文件:
[submodule "vim-pathogen"]
path = vim-pathogen
url = git://github.com/tpope/vim-pathogen.git
[submodule "bundle/python-mode"]
path = bundle/python-mode
url = git://github.com/klen/python-mode.git
[submodule "bundle/vim-fugitive"]
path = bundle/vim-fugitive
url = git://github.com/tpope/vim-fugitive.git
[submodule "bundle/ctrlp.vim"]
path = bundle/ctrlp.vim
url = git://github.com/kien/ctrlp.vim.git
[submodule "bundle/vim-tomorrow-theme"]
path = bundle/vim-tomorrow-theme
url = git://github.com/chriskempson/vim-tomorrow-theme.git
下面是这个目录的清单:
drwxr-xr-x 4 evgeniuz 100 4096 июня 29 12:06 .
drwx------ 60 evgeniuz 100 4096 июня 29 11:43 ..
drwxr-xr-x 2 evgeniuz 100 4096 июня 29 10:03 autoload
drwxr-xr-x 7 evgeniuz 100 4096 июня 29 12:13 .git
-rw-r--r-- 1 evgeniuz 100 542 июня 29 11:45 .gitmodules
-rw-r--r-- 1 evgeniuz 100 243 июня 29 11:18 .vimrc
所以,它绝对是顶级的。不更改git目录,仅执行git init
。
发布于 2012-06-29 16:54:33
git submodule init
只考虑已经在索引中的子模块(即"staged")进行初始化。我将编写一个简短的脚本来解析.gitmodules
,并为每个url
和path
对运行:
git submodule add <url> <path>
例如,您可以使用以下脚本:
#!/bin/sh
set -e
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
while read path_key path
do
url_key=$(echo $path_key | sed 's/\.path/.url/')
url=$(git config -f .gitmodules --get "$url_key")
git submodule add $url $path
done
这基于git-submodule.sh
script本身解析.gitmodules
文件的方式。
发布于 2018-11-13 04:30:15
扩展卓越的@Mark Longair的答案,添加关于分支和存储库名称的子模块。
#!/bin/sh
set -e
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
while read path_key path
do
name=$(echo $path_key | sed 's/\submodule\.\(.*\)\.path/\1/')
url_key=$(echo $path_key | sed 's/\.path/.url/')
branch_key=$(echo $path_key | sed 's/\.path/.branch/')
url=$(git config -f .gitmodules --get "$url_key")
branch=$(git config -f .gitmodules --get "$branch_key" || echo "master")
git submodule add -b $branch --name $name $url $path || continue
done
发布于 2014-06-27 08:20:32
我也遇到过类似的问题。git submodule init
正在悄悄地失败。
当我这样做的时候:
git submodule add <url> <path>
我得到了:
The following path is ignored by one of your .gitignore files: ...
我认为.gitignore(d)路径可能是原因。
https://stackoverflow.com/questions/11258737
复制相似问题