Что такое push --force и зачем он нужен
Что проверяют
Понимаете ли вы, что происходит на сервере при перезаписи ветки, и отличаете ли безопасный случай от разрушительного. За вопросом стоит не знание флага, а командная гигиена: мобильная разработка живёт релизными ветками и тегами, по которым собираются подписанные сборки.
Как отвечать
Обычный push отклоняется, когда удалённая ветка не является предком вашей локальной. git push --force заставляет сервер переставить указатель ветки на ваш коммит, и прежние коммиты становятся недостижимыми, а со временем удаляются сборщиком мусора.
Команда нужна после осознанного переписывания истории: перебазирование на свежую основную ветку, исправление последнего коммита через commit --amend, схлопывание коммитов перед вливанием, вычистка случайно закоммиченного ключа или гигабайтного файла.
Безопасная форма это --force-with-lease: сервер сначала убедится, что ветка находится там, где вы её видели в последний раз. Важная оговорка: фоновый fetch из среды разработки обновляет ссылку удалённого отслеживания, и защита перестаёт защищать. Надёжнее указать ожидаемый коммит явно либо добавить --force-if-includes.
Практическое правило: своя ветка под ревью это нормально и даже полезно, общая ветка только по договорённости, а основная и релизные закрываются защитой на стороне хостинга. Релизные теги не переписывают никогда: артефакт в магазине должен соответствовать коду, по которому он собран.
Где спотыкаются
Перезаписывают общую ветку и стирают чужие коммиты. Коллега узнаёт об этом при следующем pull, а восстановить сможет только тот, у кого потерянные коммиты ещё лежат локально: серверный журнал ссылок обычным разработчикам недоступен.
Считают --force-with-lease полной защитой и перестают думать. Любой процесс, который успел подтянуть состояние удалённого репозитория, обновляет ссылку, после чего проверка проходит и чужая работа исчезает так же тихо.
Переписывают историю ветки, от которой уже кто-то ответвился или которую уже влили. Ответвившийся получит дубли коммитов и конфликты на ровном месте, а перезапись влитой истории ломает соответствие между сборками и кодом, по которому их разбирают в отчётах о падениях.