тянуть / толкать из нескольких удаленных мест

Проверьте http://rubular.com , чтобы проверить регулярное выражение:

url.match(/url=([^&]+)/)[1]

688
задан Luke Girvin 1 February 2019 в 11:43
поделиться

4 ответа

Вы можете настроить несколько удаленных репозиториев с помощью команды git remote :

git remote add alt alt-machine:/path/to/repo

Чтобы получить данные со всех настроенных пультов дистанционного управления и обновить ветки отслеживания, но не объединить их в HEAD, выполните:

git remote update

Если это не так в данный момент подключенный к одному из пультов дистанционного управления, он перейдет к следующему. Вам придется вручную выполнить слияние из извлеченных репозиториев или выбрать вишню, в зависимости от того, как вы хотите организовать сбор изменений.

Чтобы получить основную ветку из alt и вставить ее в текущую голову, выполните:

git pull alt master

Таким образом, на самом деле git pull является почти сокращением для git pull origin HEAD (на самом деле он смотрит в файл конфигурации, чтобы определить это, но вы поняли идею).

Для отправки обновлений вы должны делать это для каждого репо вручную. Думаю, толчок был разработан с учетом рабочего процесса центрального хранилища.

482
ответ дан 22 November 2019 в 21:35
поделиться

Вам понадобится сценарий для их просмотра. Git не обеспечивает «толкать все». Теоретически вы можете выполнять push в нескольких потоках, но собственный метод недоступен.

Fetch еще сложнее, и я бы рекомендовал делать это линейно.

Я думаю, что ваш лучший ответ - иметь когда-то машину, которая каждый делает толчок / тягу, если это вообще возможно.

3
ответ дан 22 November 2019 в 21:35
поделиться

Вы можете добавить пульты с помощью:

git remote add a urla
git remote add b urlb

Затем, чтобы обновить все репозитории, выполните:

git remote update
22
ответ дан 22 November 2019 в 21:35
поделиться

Делать это вручную больше не нужно, с современными версиями git! Смотрите решение Malvineous, ниже.

Воспроизведено здесь:

git remote set-url origin --push --add <a remote>
git remote set-url origin --push --add <another remote>

Оригинальный ответ:

Это то, что я использую уже довольно долгое время без плохих последствий и что предложил Линус Торвальдс в списке рассылки git.

Решение araqnid подходит для внесения кода в ваш репозиторий... но когда у вас, как у меня, есть несколько равнозначных авторитетных upstream'ов (я держу некоторые из моих наиболее важных проектов клонированными и в частный upstream, и на GitHub, и в Codaset), может быть больно вносить изменения в каждый из них каждый день.

Короче говоря, git remote add все ваши репозитории по отдельности... а затем git config -e и добавьте merged-remote. Предположим, у вас есть этот репозиторий config:

[remote "GitHub"]
    url = git@github.com:elliottcable/Paws.o.git
    fetch = +refs/heads/*:refs/remotes/GitHub/*
[branch "Master"]
    remote = GitHub
    merge = refs/heads/Master
[remote "Codaset"]
    url = git@codaset.com:elliottcable/paws-o.git
    fetch = +refs/heads/*:refs/remotes/Codaset/*
[remote "Paws"]
    url = git@github.com:Paws/Paws.o.git
    fetch = +refs/heads/*:refs/remotes/Paws/*

... чтобы создать merged-remote для "Paws" и "Codaset", я могу добавить следующее после всех этих:

[remote "Origin"]
    url = git@github.com:Paws/Paws.o.git
    url = git@codaset.com:elliottcable/paws-o.git

После этого, когда я git push Origin Master, он будет последовательно нажимать на Paws/Master и Codaset/Master, что немного облегчает жизнь.

781
ответ дан 22 November 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: