Ключові поняття

Віддалено-відстежувана гілка

Якщо твій репозиторій під'єднано до віддаленого репозиторію (наприклад, origin), у тебе зазвичай буде два набори гілок:

  1. Локальні гілки — звичайні гілки, у яких ти працюєш.

  2. Віддалено-відстежувані гілки — особливі гілки тільки для читання, які відображають стан гілок у віддаленому репозиторії. Їхні назви мають формат <remote-name>/<branch-name> (наприклад, 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), тож вона теж оновлює віддалено-відстежувані гілки.