Как обновить ветку в 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 + новые):

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

GIT workflow или как работать с проектом

Апрель 2, 2024 г.

Как использовать GIT, может зависеть от многих факторов, например как проходит тестирование, работает ли целая команда над проектом или один разработчик соло. Соло разработка Концепция работы с GIT в случае одного разработчика сводится обычно ...

Читать

Создание ветки на основе существующей в GIT

Июль 30, 2018 г.

Создание новой ветки - это рутинная операция в GIT. Как указать на основе какой существующей ветки нужно создать новую? По умолчанию, за основу будет взята текущая ветка, в которой вы находитесь. Например: [crayon-69fb98b045a2b923319095/] Сначала ...

Читать

Удалить новые (untracked) файлы в git

Июль 31, 2024 г.

Иногда нужно избавиться от новых (лишних) файлов, привожу примеры команд. Если это случается регулярно, в процессе компиляции, сборки, у вас создаются файлы, которые вы не будете включать в commit, то, наверное, стоит подумать и включить их в настройки ...

Читать

Как отменить последний коммит в GIT

Ноябрь 24, 2018 г.

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

Читать
 

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

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



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