Как обновить ветку в Git без переключения на неё

Предположим, вы работаете в ветке feature, а коллеги обновили master. Вам нужно подтянуть свежие изменения в локальный master, но не хочется терять контекст и переключаться туда-обратно. Стандартный git pull работает только с текущей веткой. Что делать?

Решение – специальная форма git fetch, которая обновляет указанную локальную ветку, не меняя ваше рабочее состояние.

  • <remote> – обычно origin.
  • <удалённая_ветка> – имя ветки на сервере (например, masterdevelop).
  • <локальная_ветка> – имя локальной ветки, которую вы хотите обновить.

Пример

Вы находитесь на ветке feature и хотите обновить локальный master до состояния origin/master

Локальная ветка master будет продвинута вперёд (если это возможно) до того же коммита, что и origin/master. При этом вы останетесь на ветке feature с неизменённым рабочим каталогом и индексом.

Важное ограничение

Это работает только для быстрой перемотки (fast-forward).

Если в вашем локальном master есть коммиты, которых нет в origin/master, Git откажется выполнять операцию, чтобы вы случайно не потеряли историю. Будет выдана ошибка:

В такой ситуации Git не может просто «переместить указатель» – требуется слияние или ребейз. Это сделано специально для защиты от потери данных.

Что делать, если нужна перемотка с принуждением?

Если вы абсолютно уверены, что хотите перезаписать локальную ветку (например, вы случайно закоммитили в master что-то ненужное), можно использовать принудительный вариант с плюсом перед источником:

Это заменит вашу локальную ветку master на содержимое origin/master без всяких проверок. Коммиты, которые были только в локальном master, будут потеряны. Эта команда полезна для сброса ветки до состояния, которое точно соответствует удалённой.

Этот же приём, но для локальных веток

Этот же трюк работает и для обновления одной локальной ветки из другой (без слияния, только fast-forward). Синтаксис:

Например, обновить master до текущего состояния develop (если develop содержит все коммиты master + новые):

Мало букафф? Читайте есчо !

Организуем автодеплой изменений из репозитория для проекта на Drupal

Август 23, 2018 г.

Когда над проектом работает несколько разработчиков, то возникают определенные структурные и организационные вопросы. Каждый программист обычно работает ...

Читать

Создание патча для модуля Drupal

Декабрь 4, 2017 г.

В Drupal для решения ваших задач вы подбираете contributed модули. Отлично, если модуль поддерживается автором, в нем нет багов и есть нужный вам функционал. В противном случае, вы, возможно, правите модуль и используете его для себя. Но, наверное, было ...

Читать

Подключение к GitHub по SSH: пошаговая инструкция

Сентябрь 3, 2025 г.

Работа с репозиториями через SSH удобнее и безопаснее, чем по HTTPS — вам не нужно вводить пароль при каждом пуше, а авторизация выполняется с помощью криптографических ключей. Разберём процесс полностью: от создания ключа до проверки подключения. ...

Читать

Git pull с передачей логина и пароля

Декабрь 11, 2021 г.

Репозиторий почти всегда требует реквизитов доступа. И, если вы их не храните в локальной конфигурации, то скрипты, содержащие git pull, будут прерываться, запрашивая пару логин/пароль. Передать реквизиты с отдельным ключом нельзя, но можно задать ...

Читать
 

Комментарии к «Как обновить ветку в Git без переключения на неё»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: