git fetch: посмотреть, что нового на сервере

Обновлено 31 июля 2026 г.

git fetch скачивает свежие коммиты с сервера, но не трогает ни твою ветку, ни файлы на диске. Это разведка: узнать, что происходит, и решить, вливать это сейчас или дописать свой кусок.

$ git fetch
From github.com:username/my-project
   773e133..4f122d0  main       -> origin/main

Строка читается так: ветка main на сервере уехала с коммита 773e133 на 4f122d0, и локальный указатель origin/main теперь смотрит туда же. Твой рабочий каталог остался прежним, git status покажет то же, что и минуту назад, только с новой сводкой:

$ git status
On branch main
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Что такое origin/main

origin/main выглядит как ветка, но твоя она только наполовину. Это локальный указатель на то, где ветка main находилась на сервере в момент последнего обмена. Лежит она на твоём диске, читается мгновенно и без сети, а двигают её только git fetch и git pull.

Раз это обычная точка в истории, по ней работают все привычные команды:

$ git log origin/main --oneline
4f122d0 rewrote the install section
773e133 first version

$ git log main..origin/main --oneline    # только то, чего нет у тебя
4f122d0 rewrote the install section

$ git diff main origin/main --stat       # какие файлы поедут
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

Отличие от pull

git pull - это git fetch плюс git merge одной командой. Fetch делает только первую половину, поэтому испортить им рабочий каталог нельзя: конфликта не будет, незакоммиченные правки не пострадают. Когда картина ясна, слияние делается вторым шагом через git merge origin/main или просто через git pull.

Флаг --prune заодно убирает указатели веток, которых на сервере уже нет:

$ git fetch --prune
From github.com:username/my-project
 - [deleted]         (none)     -> origin/gone-branch

Частые ошибки

Первая - ждать, что после fetch изменятся файлы. Не изменятся. Команда обновляет указатели вида origin/main, а рабочий каталог остаётся там, где твой последний коммит.

Вторая - смотреть git log origin/main без свежего fetch. Указатель сам по себе не двигается, поэтому без обмена ты читаешь вчерашнюю картину и делаешь выводы по ней.

Где это в учебнике

Глава 6. GitHub: облако и совместная работа.

Потренироваться руками - в Песочнице: настоящий терминал с git и проверка шагов.