n1ro°
RU

Компьютеры · Инструкция

Как использовать git push --force-with-lease

После rebase обычный push часто отклоняется из-за переписанной истории. Lease позволяет принудительную отправку только п

Редакция N1RO · Проверено

Короткий ответ

Получите актуальное состояние, проверьте чужие коммиты, сохраните SHA `origin/<ветка>`, затем используйте `git push --force-with-lease=refs/heads/<ветка>:<sha> origin <ветка>`. Если remote изменится, push будет отклонён.

Что делать

  1. Обновите remote-tracking ссылки: Выполните `git fetch origin`.
  2. Проверьте, что не затираете чужую работу: Сравните `git log --oneline --graph --decorate HEAD origin/<ветка>` и разберите все неожиданные удалённые коммиты до push.
  3. Зафиксируйте ожидаемый SHA: Сохраните `git rev-parse origin/<ветка>` — это значение, которое remote должен иметь в момент отправки.
  4. Отправьте с явным lease: Выполните `git push --force-with-lease=refs/heads/<ветка>:<sha> origin <ветка>`. При несовпадении SHA сначала снова проверьте remote, а не повторяйте push вслепую.

Проверка результата

  • Перед push просмотрены удалённые коммиты
  • Lease привязан к конкретному ожидаемому SHA, а не только к локальной remote-tracking ссылке

Важно

Bare-форма `--force-with-lease` опирается на remote-tracking ref и может дать ложное чувство защиты, если фоновые процессы автоматически делают fetch. Явный `<ref>:<expect>` надёжнее фиксирует ожидаемое состояние.

Что учитывать

Bare-форма `--force-with-lease` опирается на remote-tracking ref и может дать ложное чувство защиты, если фоновые процессы автоматически делают fetch. Явный `<ref>:<expect>` надёжнее фиксирует ожидаемое состояние.

Источники и проверка

Инструкция составлена редакцией N1RO на 2026-09-18. Перед действием сверьте актуальные условия на официальном сайте сервиса или производителя.