Я пытаюсь удалить последние 2 коммита из одного из моих репозиториев GitHub. Я пытался , как предложил здесь : git push -f origin HEAD^^:master
. Вроде работает, так как последние два коммита удалены.
Затем я удалил их из своего локального репозитория с помощью git rebase -i HEAD~2
. Я удаляю строки, связанные с этими коммитами, и проверяю git log
, правильно ли они удалены.
После этого я вношу некоторые изменения в свой локальный репозиторий, делаю новый коммит и нажимаю на GitHub. Проблема в том, что в моей учетной записи GitHub есть два предыдущих коммита, которые я пытался удалить.
Я думаю, что проблема в моем локальном репозитории, потому что, если я клонирую свой репозиторий Github в свой локальный и внесу здесь некоторые изменения, когда я нажимаю новый коммит, эти старые коммиты не отправляются в GitHub.
Любая идея?
git reset --hard HEAD^4
илиgit reset --hard HEAD~4
. Хотя все может немного усложниться, если ваша история содержит слияния. Более подробную информацию об указании ревизий вы можете найти в соответствующем разделе здесь .git reset --hard HEAD~7
, но, пожалуйста, поправьте меня, если я ошибаюсь.Если вы хотите удалить 2 (два) последних коммита, для этого есть простая команда:
Вы можете изменить
2
любое количество последних коммитов, которое хотите удалить.И чтобы перенести это изменение на удаленный, вам нужно сделать
git push
с силой (-f
):Однако я не рекомендую выполнять какие-либо
git
команды-f
или--hard
параметры, если после этого на удаленном компьютере (Github) появились новые коммиты, которые вы хотите удалить. В этом случае всегда используйте .git revert
источник
hard
команду, вы потеряете эти две фиксации. Если вы хотите сохранить изменения,diff
перед применением сброса создайте файл этих коммитов.git reset HEAD~5
(не использоватьhard
). Таким образом, вы получите свои изменения в поэтапном состоянии (т.е. не зафиксированы). Для меня этот ответ .Следующие работы для меня
Он удаляет последние
n
коммиты из локального репо, так какHEAD^
удаляет только один. Если вам нужно удалить эти изменения с пульта дистанционного управления, вам может потребоваться принудительное нажатие, так как вы будете за удаленным.источник