我有几个git仓库,每个仓库都有几个名为public_<user>
的远程。
我想同时从每个远程获取所有存储库。
我已经发现(myrepos),但这个脚本只适用于origin
远程。
git remote update
命令将对给定存储库的所有远程执行fetch
操作:
$ git remote
larsks
origin
$ git remote update
Fetching origin
remote: Reusing existing pack: 1, done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (1/1), done.
From https://github.com/teythoon/afew
7317eb0..50db012 master -> origin/master
Fetching larsks
From github.com:larsks/afew
如果你想在一个git集合上自动运行存储库,你可以这样做:
$ find * -maxdepth 1 -name .git -execdir git remote update ;
查找包含.git
目录的所有内容,然后在.git
目录的父目录中运行git remote update
。
$ find * -maxdepth 1 -name index -execdir git remote update ;
也就是说,查找index
文件而不是.git
目录。
如果您想要针对所有子模块,您可以使用git submodule foreach
命令:
$ find * -maxdepth 1 -name .git -execdir
git submodule foreach git remote update ;
如果你想把这些都合并成一个命令:
$ find * -maxdepth 1 -name .git -execdir
sh -c 'git remote update; git submodule foreach git remote update' ;
我相信你正在寻找--all
标志:
git fetch --all
根据您链接的脚本的快速浏览,该脚本似乎将接受此标志并将其传递给每个存储库的git。
git forward一次在任意数量的远程上获取、修剪和快速转发任意数量的跟踪分支。对于同时跟踪多个远程/分支的集成商来说,这是非常棒的。