git. Несколько удалённых репозиториев
git. Несколько удалённых репозиториев
2021-03-27
·
2 мин. для прочтения
- Я использую несколько серверов репозиториев: github, gitlab, bitbucket.
- Возникает необходимость использовать несколько удалённых репозиториев в проекте.
Содержание
1 Общая информация
- Локальный репозиторий можно связать с несколькими удалёнными репозиториями. Однако только одна из этих ссылок может называться
origin. Остальные ссылки должны иметь другие имена. - Команда
git remote -vотображает все удалённые репозитории, связанные с вашим локальным репозиторием. - Для отправки или получения кода из вашего удалённого репозитория по умолчанию используется короткое имя
origin.
2 Несколько удалённых репозиториев
- Можно добавить несколько удалённых репозиториев по
https:или поgit remote add github https://github.com/your_name/repository_name.git git remote add gitlab https://gitlab.com/your_name/repository_name.git git remote add bitbucket https://bitbucket.org/your_name/repository_name.gitssh:git remote add github git@github.com:your_name/repository_name.git git remote add gitlab git@gitlab.com:your_name/repository_name.git git remote add bitbucket git@bitbucket.org:your_name/repository_name.git - По команде
git remote -vполучим список репозиториев:github git@github.com:your_name/repository_name.git (fetch) github git@github.com:your_name/repository_name.git (push) gitlab git@gitlab.com:your_name/repository_name.git (fetch) gitlab git@gitlab.com:your_name/repository_name.git (push) bitbucket git@bitbucket.org:your_name/repository_name.git (fetch) bitbucket git@bitbucket.org:your_name/repository_name.git (push) - Для отправки кода в репозиторий необходимо указать его имя:
git push github master git push gitlab master git push bitbucket master
3 Замена репозитория по умолчанию
- Любой из репозиториев можно назвать
origin, тогда он будет репозиторием по умолчанию. - Также можно заменить текущий удалённый репозиторий:Например:
git remote set-url <remote_name> <remote_url>git remote set-url origin https://github.com/your_name/repository_name.git
4 Submodules
- Если репозиторий содержит подмодули, то желательно, чтобы они находились на том же хостинге.
4.1 Скрипт для автоматической замены URL
- Можно сделать с помощью хуков.
- Создайте скрипт
.git/hooks/post-checkout:
#!/bin/bash
# fix-submodules.sh
# Определяем текущий origin URL
ORIGIN_URL=$(git remote get-url origin)
if [[ $ORIGIN_URL == *"github.com"* ]]; then
git submodule set-url lib/mylib https://github.com/user/mylib.git
elif [[ $ORIGIN_URL == *"gitlab.com"* ]]; then
git submodule set-url lib/mylib https://gitlab.com/user/mylib.git
fi
git submodule sync
- Сделайте файл исполняемым:
chmod +x .git/hooks/post-checkout - Впрочем, поскольку хуки не отправляются в репозиторий, они действуют только локально.

Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы.
Научные интересы относятся к области теоретической физики и математического моделирования.