Получение одновременно из нескольких репозиториев 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 любого количества отслеживающих веток на любое количество удаленных устройств одновременно. Это отлично подходит для интегратора, который следит за множеством пультов / филиалов одновременно.