Как кто-то сказал (я перефразирую) в другом потоке "Правила как это, не должен быть поврежден, пока Вы полностью не понимаете последствий выполнения так".
существуют времена, когда глобальные переменные необходимы, или по крайней мере очень полезны (Работающий с определенными обратными вызовами системы, например). С другой стороны, они также очень опасны по всем причинам, которые Вам сказали.
существует много аспектов программирования, которое нужно, вероятно, оставить экспертам. Иногда Вам НУЖЕН очень острый нож. Но Вы не добираетесь для использования того, пока Вы не готовы...
Если принудительное нажатие не помогает (« git push --force origin
» или « git push --force origin master
») должны будет достаточно), это может означать, что удаленный сервер отказывается от проталкивания без быстрой перемотки либо через конфигурационную переменную receive.denyNonFastForwards (см. описание в git config ), либо через update / pre-receive ловушка.
В более ранней версии Git это ограничение можно обойти, удалив " git push origin: master
" (см. ':' перед именем ветки) и затем воссоздав заново " git push origin master
"данная ветка.
Если вы не можете изменить это, то единственным решением будет вместо перезаписи истории в создать фиксацию , возвращающую изменения в DEF :
A-B-C-D-E-F-[(D-E-F)^-1] master A-B-C-D-E-F origin/master