从几个git存储库同时获取

时间:2014-03-10 13:41:02

标签: git fetch

我有几个git存储库,每个存储库都有几个名为public_<user>的遥控器。

我想从所有存储库的每个远程同时获取。

我已经发现(myrepos),但此脚本仅适用于origin遥控器。

3 个答案:

答案 0 :(得分:3)

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 remote update目录的父目录中运行.git

要查找所有存储库,您可以执行以下操作:

$ 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' \;

答案 1 :(得分:2)

我相信你正在寻找--all旗帜:

git fetch --all

基于对您链接的脚本的快速浏览,似乎该脚本将接受此标志并将其传递给每个存储库的git。

答案 2 :(得分:0)

git forward一次在任意数量的遥控器上提取,修剪和快进任意数量的跟踪分支。这对于一次关注许多遥控器/分支机构的集成商来说非常棒。