Удалённые репозитории
1Удалённые репозитории: remote и fetch2push и pull: синхронизация с remote3clone и fork: работа с чужими репозиториями4Tracking branches: origin, upstream, fetch← вы здесь5Pull Request: код-ревью и совместная работа
📖 Полная статья по теме →
Урок 4~12 минут

Tracking branches: origin, upstream, fetch

За словом origin скрывается URL. А за git pull — два шага: fetch и merge. Разберём как это всё устроено.

Remote — это просто псевдоним

bash
git remote add origin https://github.com/user/repo.git

origin — это имя (псевдоним) для URL. Можно назвать как угодно:

bash
git remote add production ssh://server/repo.git
git remote add backup https://gitlab.com/user/repo.git

На практике:

  • origin — твой основной remote (GitHub/GitLab)
  • upstream — оригинальный репозиторий когда работаешь с форком

Tracking branches

Когда делаешь git push -u origin main, создаётся связь между локальной веткой и remote:

bash
git push -u origin main
# Branch 'main' set up to track remote branch 'main' from 'origin'

После этого можно просто писать git push и git pull без аргументов.

Посмотреть все связи:

bash
git branch -vv
# * main  abc1234 [origin/main] последний коммит

fetch vs pull

bash
git fetch          # скачать изменения, но НЕ сливать
git pull           # fetch + merge (или rebase)

fetch безопаснее — позволяет сначала посмотреть что изменилось:

bash
git fetch origin
git log main..origin/main   # что нового на remote
git diff main origin/main    # конкретные изменения
git merge origin/main        # применить когда готов

origin/main — это не ветка

origin/main — это remote-tracking branch: локальная копия последнего известного состояния remote ветки. Обновляется при fetch и pull.

bash
git log origin/main   # история remote (на момент последнего fetch)
git show origin/main  # последний коммит на remote

Работа с форком (fork workflow)

Форкнул репозиторий? Нужно два remote:

bash
# origin — твой форк
git remote add origin https://github.com/ты/repo.git
 
# upstream — оригинал
git remote add upstream https://github.com/автор/repo.git

Синхронизация с оригиналом:

bash
git fetch upstream
git merge upstream/main
git push origin main

Полезные команды

bash
git remote -v                    # список remote с URL
git remote add <имя> <url>       # добавить remote
git remote rename origin old     # переименовать
git remote remove upstream       # удалить
 
git fetch                        # скачать все remote
git fetch origin main            # конкретную ветку
git fetch --all                  # все remote сразу
git fetch --prune                # удалить ветки которых нет на remote
 
git pull                         # fetch + merge
git pull --rebase                # fetch + rebase (чище история)
origin — это просто псевдоним для URL твоего remote. Ты можешь назвать его как угодно, но origin — соглашение которое знают все.
🌐
Удалённый репозиторийшаг 0 / 3
💻Local
main
f0e1d2cinit: первый коммит
4b5c6d7docs: обновил README
a3f7c21feat: главная страница
☁️GitHub (origin)
main
пусто
УГЛУБЛЁННОЕ ЧТЕНИЕ
Полная статья: Удалённые репозитории
Теория, примеры и разбор темы в одном месте