Про Git
November 8, 2024

Ситуация  «(git pull …) before pushing again»

Команда git pull используется для получения (загрузки) актуальных данных из удалённого репозитория в локальный и применения этих изменений. На самом деле эта команда "под капотом" выполняет две другие команды, но сейчас речь не об этом.

Для успешного выполнения этой команды, желательно, чтобы в локальном репозитории не было незакоммиченных изменений или они должны быть припрятаны с помощью git stash, в противном случае могут быть проблемы.

Итак, при каких обстоятельствах может возникнуть данная ситуация?

Это происходит тогда, когда у нас в удалённом репозитории в текущей ветке появился коммит, и мы, не получив этот коммит себе локально, хотим запушить свои изменения. В таком случае произойдёт вот это:

Сам git в терминале нам даёт подсказку: use 'git pull' before pushing again

Пробуем:

Что-то пошло не так...

Git просит нас указать способ взаимодействия с новым коммитом: сделать merge (слияние) или rebase (перебазирование). Подробно останавливаться не буду на этом, по ссылкам можно почитать про каждый вариант, в том числе и что такое fast-forward. Буду использовать rebase,для этого пишу: git pull --rebase

Видим, что всё успешно.

Пробуем запушить наши изменения снова:

Всё отправилось без проблем.

Иногда возникают ситуации, когда у нас локальная ветка не связана с удалённой и в таком случае, при попытке сделать git pullбудет следующая ситуация:

В этом случае нам нужно указать источник (origin) и имя удалённой ветки при выполнении команды git pull:

Спасибо за внимание)