Получение одновременно из нескольких репозиториев git

У меня есть пара репозиториев git, в каждом из которых есть несколько пультов public_<user>,

Я хотел бы получить одновременно с каждого пульта для всех хранилищ.

Я уже обнаружил ( myrepos), но этот скрипт работает только для origin пульты дистанционного управления.

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

Я полагаю, что вы ищете --all флаг:

git fetch --all

На основании быстрого взгляда на скрипт, который вы связали, кажется, что этот скрипт примет этот флаг и передаст его git для каждого из ваших репозиториев.

git forward fetches, prunes и fast-forward любого количества отслеживающих веток на любое количество удаленных устройств одновременно. Это отлично подходит для интегратора, который следит за множеством пультов / филиалов одновременно.

Другие вопросы по тегам