Удалённые репозитории
Урок 4~12 минут
Tracking branches: origin, upstream, fetch
За словом origin скрывается URL. А за git pull — два шага: fetch и merge. Разберём как это всё устроено.
Remote — это просто псевдоним
bash
git remote add origin https://github.com/user/repo.gitorigin — это имя (псевдоним) для 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
mainf0e1d2c4b5c6d7a3f7c21☁️GitHub (origin)
mainпусто