Можно запретить принудительные отправки на стороне сервера, установив receive.denyNonFastForwards или добавив git hook (или другим способом для специальных серверов GIT, таких как Gerrit или Github). Я хотел бы отказаться от принудительного обновления на стороне клиента (см. также здесь) , при выполнении git fetch
или git pull
или git pull --rebase
. Если у меня нет доступа к серверу GIT, чтобы отклонить принудительные нажатия (или если я не доверяю серверу, потому что у других тоже есть доступ), я могу захотеть, чтобы GIT остановился с ошибкой перед изменением каких-либо ссылок, когда принудительное нажатие было Выполнено. Это может помочь заметить, что злоумышленники меняют пульт, или если я просто хочу знать, меняет ли кто-то мои коммиты (да, если я действительно хочу, чтобы кто-то другой не совершал коммитов с использованием моего имени, мне нужно подписывать свои коммиты, используя мой ключ).
Кажется, невозможно запустить код после fetch or pull с помощью хуков. Я анализирую вывод git fetch
и выдаю ошибку, если было напечатано «принудительное обновление». Но на самом деле было бы лучше обнаружить это до изменения ссылок.
Есть лучший способ сделать это?