Есть.Это не слишком неясно: это git push --force-with-lease
.
То, как вы сообщаете двум задействованным Gitам, какой хеш-идентификатор вы ожидаете от другого Git, - это установить что-то в ваш Git.В вашем Git вы указываете имя для удаленного отслеживания .Например, я создал слегка глупое / бессмысленное имя zilly
в фиктивном репозитории, который я держу для тестирования:
git push origin master:zilly
Теперь мой локальный Git имеет origin/zilly
(полное имя refs/remotes/origin/zilly
), содержащее хешID Я думаю, что они - origin
- имеют свои refs/heads/zilly
, поэтому:
git push --force-with-lease --delete origin zilly
Если бы я обновил их zilly
с тех пор (любыми средствами), или изменил свое представление об ихzilly
, я получаю:
! [rejected] (delete) -> zilly (stale info)
error: failed to push some refs to <url>
Обратите внимание, что (а) это работает для регулярных принудительных обновлений и (б) вы можете записать операцию удаления различными способами;ключ по-прежнему это --force-with-lease
, что означает, что вы должны иметь origin/<em>whatever</em>
в вашем локальном хранилище.Это довольно удобно, поскольку git fetch origin --prune
поддерживает ваш локальный репозиторий в актуальном состоянии.