Допустим, у нас есть удаленный origin
с веткой master
, который в данный момент указывает на фиксацию dd61ab32
. Мы хотим удалить коммит top
. В переводе на терминологию git мы хотим принудительно установить ветку master
исходного удаленного репозитория в parent
из dd61ab32
:
git push origin +dd61ab32^:master
Где git интерпретирует x^
как родительский элемент x
и +
как принудительный push без ускоренной перемотки вперед.
Если это последний коммит, который вы хотите удалить локально, то:
Необходимы два шага:
git reset HEAD^ --hard
git push origin -f
если это не последний коммит, который вы можете попробовать:
git rebase -i commit_hash^
Переписывание истории или перебазирование, если ветвь уже была сдвинута, обычно плохая идея, и вы также можете предпочесть использовать:
git revert commit_hash
Источник