Модуль 6: Работа с удалёнными репозиториями
Подключим удалённый репозиторий, научимся получать и отправлять изменения, разберём upstream‑связь и протоколы.
Удалённые — это не «сервер где‑то там», а набор правил синхронизации ссылок и объектов между вашим локальным графом истории и графом на хостинге. Понимание ссылок и политик push/pull делает работу предсказуемой и безопасной.
6.1 Клонирование репозитория
git clone https://github.com/user/repo.git
# или по SSH
git clone git@github.com:user/repo.git
6.2 Просмотр и добавление удалённых
git remote -v
# добавить remote
git remote add origin git@github.com:user/repo.git
# изменить URL
git remote set-url origin git@github.com:user/repo.git
Имя remote — это просто ярлык (обычно origin
). Вы можете иметь несколько remotes для зеркалирования, форков или реплик, а также настраивать для каждого свой refspec.
6.3 Получение изменений: fetch и pull
git fetch
— скачивает объекты и ссылки без изменения рабочих файловgit pull
=fetch
+merge
(илиrebase
при настройке)
git fetch origin
# обновить текущую ветку с ребейзом
git pull --rebase
Выбирайте стратегию pull
осознанно. В проектах с линейной историей предпочтителен --rebase
; если важны явные точки слияния — оставляйте merge. Главное — договориться в команде и закрепить настройками.
6.4 Отправка изменений: push и upstream
# первый пуш и привязка upstream
git push -u origin feature/login
# обычный пуш после привязки
git push
Привязка upstream упрощает ежедневную работу: короткие команды без параметров используют «запомненные» направления. Следите за политиками проекта: где разрешён force‑push, а где — нет.
6.5 Протоколы: SSH vs HTTPS
- HTTPS: проще стартовать, может требовать PAT/логин‑пароль
- SSH: ключи, удобен для постоянной работы
6.6 Tracking‑ветки
Локальная ветка может «отслеживать» удалённую (upstream). Это включает краткие push/pull и подсказки статуса (на сколько коммитов вы опережаете/отстаёте).
6.7 Refspec: правила сопоставления ссылок
Refspec определяет, какие refs переносятся при fetch/push (например, +refs/heads/*:refs/remotes/origin/*
). Знание refspec важно для зеркалирования и тонкой настройки синхронизации.
6.8 Политика push: push.default
Настройка управляет поведением git push
без аргументов (simple
, current
, upstream
, matching
). Рекомендуется simple
для безопасности.
6.9 Prune и обслуживание ссылок
git fetch --prune
удаляет локальные ссылки на удалённые ветки, которые были удалены на сервере. Полезно для гигиены репозитория.
6.10 Shallow и Partial clone
Shallow clone (параметры глубины) ограничивает историю для экономии времени/трафика. Partial clone и фильтры (promisor) позволяют отложенную загрузку больших файлов.
6.11 URL‑схемы и credential helpers
Форматы URL (SSH/HTTPS), хранение и кэширование учётных данных через credential helpers (Windows/MacOS keychain, менеджеры). Безопасность секретов — ключевой аспект работы с удалёнными.