自动将所有子模块添加到回购

maz*_*lix 4 git git-submodules

我有一个大目录~/.vim,在其中我有一个子目录,其中有许多其他git回购.我想制作我的~/.vim目录的git repo ,但不想浏览我的其他git子目录.

有没有办法只递归通过并添加所有子模块?

Fat*_*lan 6

假设 .vim已经是一个有效的git repo并且你想要将所有git repos添加到你的主git repo,那么下面的for循环可能是你需要的:

首先,cd你的 git存储库的根目录.

只能粘贴预览命令 - 回显,不会进行任何更改:

for x in $(find . -type d) ; do if [ -d "${x}/.git" ] ; then cd "${x}" ; origin="$(git config --get remote.origin.url)" ; cd - 1>/dev/null; echo git submodule add "${origin}" "${x}" ; fi ; done
Run Code Online (Sandbox Code Playgroud)

用于添加子模块的可粘贴命令:

for x in $(find . -type d) ; do if [ -d "${x}/.git" ] ; then cd "${x}" ; origin="$(git config --get remote.origin.url)" ; cd - 1>/dev/null; git submodule add "${origin}" "${x}" ; fi ; done
Run Code Online (Sandbox Code Playgroud)

此循环首先只查找目录,查找.git目录,标识原始URL,然后添加子模块.

可读版本:

for x in $(find . -type d) ; do
    if [ -d "${x}/.git" ] ; then
        cd "${x}"
        origin="$(git config --get remote.origin.url)"
        cd - 1>/dev/null
        git submodule add "${origin}" "${x}"
    fi
done
Run Code Online (Sandbox Code Playgroud)

  • 以下是对我有用的:`for $ in $(ls -d bundle/*); do; if [-d"$ i"/.git]; 然后; git submodule add $(cd $ i && git remote show origin | grep Fetch | awk'{print $ 3}')./ $ i; 网络连接; done` (2认同)