Copy $ git submodule add --name < NAM E > -b < BRANC H > < REPO_UR L > < /path/in/rep o >
$ git submodule init
$ git submodule update --init
Copy # update branch
$ git config -f .gitmodules submodule. < NAM E > .branch < NEW_BRANC H >
$ git submodule update --remote
Copy $ git submodule deinit -f .
$ git submodule update --init
Copy $ git log --oneline [--name-only] -- /path/to/submodule
# list all
$ git config --blob HEAD:.gitmodules --get-regexp path |
awk '{print $NF}' |
xargs -I {} bash -c "echo -e \"\\n~~> {}:\"; git log -1 --oneline -- {}"
[!TIP|label:references:]
example:
Copy $ git config --blob HEAD:.gitmodules --get-regexp [url | branch | path]
# or
$ git config --blob HEAD:.gitmodules --get-regexp ^submodule. \( .+ \) . \( path \| url \| branch \)
Copy $ git config --blob HEAD:.gitmodules --list
# or
$ git show HEAD:.gitmodules | git config --file - --list
Copy $ git submodule foreach --quiet 'echo $name'
# or
$ git submodule foreach --quiet 'echo $name' |
xargs -I {} bash -c "git ls-tree -z -d HEAD -- {}; echo ''"
Copy $ git show HEAD:.gitmodules | git config --file - --get-regexp path
# or
$ git --no-pager config \
--file \$( git rev-parse --show-toplevel ) /.gitmodules \
--get-regexp ^submodule. \\( . + \\).path
Copy $ git show HEAD:.gitmodules | git config --file - --get-regexp url
# or
$ git --no-pager config \
--file \$( git rev-parse --show-toplevel ) /.gitmodules \
--get-regexp ^submodule. \\( . + \\).url
# or
$ git submodule foreach -q git config remote.origin.url
# or
$ find .git/modules/ -name config -exec grep url {} \;
# or
$ git config --list | grep -E ^submodule.*.url
Copy $ git config --blob HEAD:.gitmodules --get-regexp branch
Copy $ git submodule deinit -f < NAM E > ### operational
$ git rm --cached < NAM E >
$ rm -rf < submodulePat h >
$ rm -rf .git/modules/ < NAM E >
$ git config -f .gitmodules --remove-section submodule. < NAM E > ### or $ rm -rf .gitmodules
$ git config -f .git/config --remove-section submodule. < NAM E > ### or $ vim .git/config