Recursive Git push/pull? Recursive Git push/pull? git git

Recursive Git push/pull?


I find myself in the same situation whenever I want to update my llvm/clang repositories and with a bit of bash help I can 'git pull' each of them like this:

$> for dir in $(find . -name ".git"); do cd ${dir%/*}; git pull ; cd -; done

This will 'git pull' all git repos found under your current directory, and probably wont work if they are bare repositories.


Not quite git pull, but close:

git fetch --recurse-submodules

From the Git docs:

--recurse-submodules[=yes|on-demand|no]

This option controls if and under what conditions new commits of populated submodules should be fetched too. It can be used as a boolean option to completely disable recursion when set to no or to unconditionally recurse into all populated submodules when set to yes, which is the default when this option is used without any value. Use on-demand to only recurse into a populated submodule when the superproject retrieves a commit that updates the submodule’s reference to a commit that isn’t already in the local submodule clone.


if you are talking about submodules, see cupcakes answer.

if you are talking about some folder hierarchy containing git repos, you can checkout clustergit, a tool i programmed: https://github.com/mnagel/clustergit