Поиск по сайту:

Как использовать git с несколькими удаленными репозиториями


git можно настроить для отправки и извлечения из многих мест одновременно, что позволяет хранить код на двух разных платформах, поддерживая только одну локальную копию. Вот как это настроить.

Пульты, объяснение

«Удаленный» для ветки — это URL-адрес, с которого ваш локальный репозиторий git получает изменения. Ваш локальный репозиторий git полностью принадлежит вам — на него не влияет код других людей, пока они не отправят свои коммиты на удаленный сервер. Надеюсь, вы все используете один и тот же пульт, и все синхронизируется, но пульт — это просто конечная точка. Вы можете клонировать эту конечную точку и переключиться на новый пульт без особых проблем.

Всякий раз, когда вы клонируете новый репозиторий, удаленный по умолчанию устанавливается как «источник». Вы можете найти пульты для любого заданного репозитория git, запустив:

git remote -v

Это, вероятно, отобразит URL-адрес вашего основного репозитория на GitHub или любой другой службе, которую вы используете. Если у вас есть несколько пультов, они тоже появятся здесь.

Но то, что origin является удаленным по умолчанию, не означает, что вы ограничены одним. Зачем тебе два пульта? Что ж, хорошим вариантом использования является CodeCommit от AWS. Это размещенный репозиторий git, который имеет множество интеграций с их вычислительной платформой EC2, что позволяет автоматически развертывать код на ваших серверах непосредственно из системы управления версиями.

Однако CodeCommit довольно неуклюж по сравнению с более специализированными поставщиками git, такими как GitHub, GitLab и BitBucket, и не имеет тех интеграций CI/CD, которые делают эти поставщики великолепными. Таким образом, вы столкнулись с дилеммой: используйте CodeCommit в качестве решения git по умолчанию или создайте конвейер автоматического развертывания кода самостоятельно.

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

Настройка нескольких пультов

Использовать git на самом деле довольно просто. Вы добавляете удаленные устройства так же, как вы добавляете существующую папку, за исключением того, что вместо добавления «исходного» удаленного устройства вы даете ему другое имя.

git remote add <name> <url>

Затем, когда вы хотите выполнить отправку на второй пульт, добавьте удаленное имя и ветку в команду push:

git push second master

Или переключите пульт по умолчанию с помощью --set-upstream:

git push --set-upstream second master

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

На самом деле, если вы используете установку с двумя удаленными устройствами, вам, вероятно, понадобится лучший способ управления отправкой кода на второй пульт. Лучший способ справиться с этим в git – создать еще одну ветку для кода, переданного во второй восходящий поток, например, для развертывания в AWS CodeCommit.

Вы можете создать ветку с помощью checkout -b:

git checkout -b deployment

Затем добавьте удаленное развертывание:

git remote add deployment <url>

и получить основную ветку:

git fetch deployment master

Затем вы можете установить восходящий поток для текущей ветки, запустив:

git branch --set-upstream-to=deployment/master

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

Было бы идеально, если бы вторая ветвь была только в одну сторону, то есть вы только отправляете код, а не получаете новый код, иначе вы можете столкнуться с неожиданными конфликтами. В остальном git отлично работает с несколькими пультами.