Проверьте http://rubular.com , чтобы проверить регулярное выражение:
url.match(/url=([^&]+)/)[1]
Вы можете настроить несколько удаленных репозиториев с помощью команды 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
(на самом деле он смотрит в файл конфигурации, чтобы определить это, но вы поняли идею).
Для отправки обновлений вы должны делать это для каждого репо вручную. Думаю, толчок был разработан с учетом рабочего процесса центрального хранилища.
Вам понадобится сценарий для их просмотра. Git не обеспечивает «толкать все». Теоретически вы можете выполнять push в нескольких потоках, но собственный метод недоступен.
Fetch еще сложнее, и я бы рекомендовал делать это линейно.
Я думаю, что ваш лучший ответ - иметь когда-то машину, которая каждый делает толчок / тягу, если это вообще возможно.
Вы можете добавить пульты с помощью:
git remote add a urla
git remote add b urlb
Затем, чтобы обновить все репозитории, выполните:
git remote update
Делать это вручную больше не нужно, с современными версиями 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
, что немного облегчает жизнь.