Обновить ветку без случайного merge-коммита

pull --ff-only отказывается вместо того, чтобы молча создать слияние — и это именно то поведение, которое нужно по умолчанию

git pull --ff-only
git config --global pull.ff only
git log --oneline --graph HEAD...@{u}
git pull --rebase

Обычный git pull при разошедшихся ветках молча создаёт merge-коммит. На ветке, куда вы просто хотели подтянуть чужие правки, это даёт «ромбы» в истории и коммиты с сообщением Merge branch 'develop' of ..., которые никто не собирался делать.

--ff-only меняет договор: обновиться, если можно просто перемотать указатель вперёд, и отказаться, если нельзя. Отказ здесь — полезный сигнал: у вас есть локальные коммиты, которых нет на сервере, и решение, что с ними делать, стоит принять осознанно.

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

HEAD...@{u} (три точки) показывает коммиты, уникальные для каждой стороны: сразу видно, ваши это правки или чужие. @{u} — сокращение для upstream-ветки, не нужно печатать origin/develop.

git pull origin без имени ветки работает не всегда так, как ожидается: он подтянет настроенную ветку, а если upstream не задан — сообщит, что не знает, откуда тянуть. Указывать ветку явно или настроить upstream надёжнее, чем повторять команду в надежде на другой результат.