Удалённые репозитории: remote и fetch
До этого момента Git работал только локально. Пора подключить удалённый репозиторий — GitHub, GitLab или собственный сервер.
Что такое remote
Remote — это ссылка на удалённый репозиторий. Просто псевдоним и URL:
git remote add origin https://github.com/ivan/my-project.gitorigin— имя (псевдоним)- URL — адрес репозитория
Ты можешь назвать remote как угодно, но origin — универсальная конвенция для основного удалённого репозитория.
Управление remote
git remote -v # список всех remote и URL
git remote add upstream https://... # добавить второй remote
git remote remove origin # удалить remote
git remote rename origin github # переименоватьНесколько remote бывают нужны: origin — твой fork, upstream — оригинальный репозиторий проекта.
Tracking branches — origin/main
После первого git fetch или git push Git создаёт tracking branch — локальный указатель на состояние удалённой ветки:
origin/main → последний известный коммит на remote
main → твой локальный указатель
Это разные вещи. origin/main обновляется только когда ты запускаешь git fetch или git pull.
git log origin/main # история remote ветки
git diff origin/main # что изменилось у тебя относительно remotegit fetch — безопасное получение данных
git fetch originСкачивает все новые коммиты с remote и обновляет origin/main. Не трогает твою рабочую папку и ветки. Ты можешь посмотреть что изменилось, прежде чем мержить.
git fetch origin
git log origin/main --oneline -5 # смотришь что пришло
git merge origin/main # мержишь когда готовЭто безопаснее чем git pull — сначала видишь, потом решаешь.
Попробуй в симуляции
Полный путь от нуля до GitHub
# 1. Создать репо на GitHub (через веб-интерфейс)
# 2. Инициализировать локально (если ещё нет)
git init
git add .
git commit -m "init: первый коммит"
# 3. Подключить remote
git remote add origin https://github.com/ivan/my-project.git
# 4. Отправить
git push -u origin mainИли наоборот — если репо уже на GitHub, просто git clone.
Команды
git remote -v # список remote
git remote add origin URL # добавить remote
git fetch origin # скачать без merge
git fetch --all # скачать со всех remote
git remote show origin # подробности о remotemainf0e1d2c4b5c6d7a3f7c21main