git pull: забрать чужие изменения
Обновлено 31 июля 2026 г.
git pull скачивает новые коммиты с сервера и сразу вливает их в твою текущую ветку. Одна команда делает два шага: сначала git fetch, потом git merge.
Забирать надо перед тем, как начинать работу, и перед каждым git push. Сервер откажется принимать ветку, которая отстала, и правильно сделает.
$ git pull
From github.com:username/my-project
4f122d0..fb1befe main -> origin/main
Updating 4f122d0..fb1befe
Fast-forward
notes.txt | 1 +
1 file changed, 1 insertion(+)Первые две строки - работа fetch: коммиты приехали, указатель origin/main сдвинулся. Дальше идёт слияние. Слово Fast-forward значит, что своих коммитов у тебя не было, и git просто передвинул указатель ветки вперёд, ничего не сочиняя.
Если ты коммитил, пока коммитили другие, истории разошлись, и git собирает коммит слияния:
$ git pull
From github.com:username/my-project
fb1befe..9553949 main -> origin/main
Merge made by the 'ort' strategy.
readme.txt | 1 +
1 file changed, 1 insertion(+)Конфликт при pull
Когда ты и коллега правили один и тот же участок одного файла, автоматика пасует:
$ git pull
From github.com:username/my-project
9553949..b0a71c4 main -> origin/main
Auto-merging conf.txt
CONFLICT (content): Merge conflict in conf.txt
Automatic merge failed; fix conflicts and then commit the result.Это рутина, а не катастрофа, и ничего пока не потеряно. Открой файл, выбери нужный вариант, убери маркеры <<<<<<<, ======= и >>>>>>>, потом git add и git commit. Вернуть всё как было до pull помогает git merge --abort. Разбор по шагам - в статье merge conflicts.
pull --rebase
Второй способ соединить расхождение - перенести свои коммиты поверх чужих, без коммита слияния:
$ git pull --rebase
From github.com:username/my-project
58d82b3..f2b0989 main -> origin/main
Successfully rebased and updated refs/heads/main.История получается прямой линией: сначала чужие коммиты, потом твои. Цена в том, что твои коммиты получают новые хеши. Для ветки, которую ты ещё не отправлял, это безопасно; правила и ограничения - в статье git rebase.
Первый в жизни pull может вместо результата напечатать You have divergent branches and need to specify how to reconcile them. Git спрашивает, какой из двух способов ты выбираешь. Ответ даётся один раз:
$ git config --global pull.rebase false # соединять через merge
$ git config --global pull.rebase true # переносить свои коммиты поверхЧастые ошибки
Pull с незакоммиченными правками останавливается на error: Your local changes to the following files would be overwritten by merge. Закоммить работу или спрячь её через git stash, потом повтори.
Ещё pull вливает в ту ветку, в которой ты стоишь сейчас. Если задача идёт в отдельной ветке, а обновить надо основную, сначала git switch main.
Где это в учебнике
Глава 6. GitHub: облако и совместная работа.
Потренироваться руками - в Песочнице: настоящий терминал с git и проверка шагов.