Я думаю, что самый простой способ - решить эту проблему, внедрив в вашей организации рабочий процесс git. Как упомянуто в комментарии @ j6t, по умолчанию кто-то должен будет принудительно-pu sh, если конец их текущей ветви находится позади своего удаленного коллеги.
Поэтому я предлагаю
- Никогда не заставляйте pu sh, если только вы действительно не знаете, что делаете
- Используйте
rebase
в качестве метода локальной очистки. - Это хорошо известный шаблон рабочего процесса
По сути, вторая точка зрения состоит в том, что вы можете локально перебазировать ветку к удаленному мастеру (или какой-либо другой целевой ветке) перед отправкой запроса на извлечение ( или прямо на него давить). Это позволит убедиться, что конфликты случаются только в вашем локальном и удаленного репо будет чистым.