Удалённо-отслеживаемая ветка
Если твой репозиторий подключён к удалённому репозиторию (например, origin), у тебя обычно будет два набора веток:
-
Локальные ветки — это обычные ветки, в которых идёт работа.
-
Удалённо-отслеживаемые ветки (remote-tracking branches) — это специальные ветки только для чтения, которые отражают состояние веток в удалённом репозитории. Их названия имеют формат
<имя-удалённого-репозитория>/<имя-ветки>(например,origin/main).
Зачем они нужны?
-
Чтобы сравнивать локальные ветки с удалёнными. Можно использовать команды вроде
git logилиgit diffотносительноorigin/main, чтобы посмотреть, что изменилось на сервере, не трогая рабочее дерево. -
Чтобы восстанавливать сломанные локальные ветки. Если локальная ветка пошла не туда, её можно сбросить к состоянию удалённо-отслеживаемой ветки (например,
git switch main, а затемgit reset --hard origin/main). -
Чтобы создавать новые ветки. Нужно начать работу на основе того, что есть только на сервере? Создай локальную ветку из удалённо-отслеживаемой:
git switch -c feature origin/feature.
Откуда они берутся?
-
После клонирования репозитория все ветки из удалённого репозитория копируются в виде удалённо-отслеживаемых веток в твой локальный репозиторий. Однако только ветка по умолчанию сразу становится полноценной локальной, и на неё происходит переключение.
Например, если в удалённом репозитории есть ветки
main,feature-1иfeature-2, в твоём локальном репозитории появятся удалённо-отслеживаемые веткиorigin/main,origin/feature-1иorigin/feature-2, но толькоmainбудет создана как локальная ветка и сделана активной. -
Выполнение
git fetchобновляет существующие удалённо-отслеживаемые ветки в твоём репозитории и создаёт новые, если на сервере появились новые ветки.Если ветку удалили с сервера, соответствующая удалённо-отслеживаемая ветка всё равно останется локально, пока ты не очистишь её, выполнивgit fetch --prune. Git никогда не удаляет данные без твоего явного согласия. -
Выполнение
git pullравносильно запускуgit fetchс последующимgit merge(илиgit rebase), поэтому оно также обновляет удалённо-отслеживаемые ветки.
.gitignoregit checkoutgit configgit taggit worktree