Подтвердить что ты не робот

Как удалить последнее n commit на Github и локально?

Я пытаюсь удалить последние 2 коммита в одном из своих репозиториев GitHub. Я пробовал, как предлагалось здесь: git push -f origin HEAD ^^: master. Кажется, что он работает, последние два фиксации удаляются.

Затем я удалил их из своего локального репозитория с помощью git rebase -i HEAD ~ 2. Я удаляю строки, которые связаны с этими фиксациями, и проверяем с помощью журнала git, что они правильно удалены.

После этого я вношу некоторые изменения в свой локальный репозиторий, делаю новый коммит и нажимаю на GitHub. Проблема в том, что в моей учетной записи GitHub у меня есть две предыдущие фиксации, которые я пытался удалить.

Я думаю, что проблема в моем локальном репозитории, потому что если я клонирую свой репозиторий Github для своего локального пользователя и сделаю некоторые изменения здесь, когда я нажимаю новый коммит, то старые коммиты не помещаются в GitHub.

Любая идея?

4b9b3361

Ответ 1

Чтобы удалить последние два коммита локально, я бы предложил использовать:

git reset --hard HEAD^^

Rebase - совершенно другая операция, которая вам не поможет.

Ответ 2

Если вы хотите удалить 2 (две) последние фиксации, для этого есть простая команда:

git reset --hard HEAD~2

Вы можете изменить 2 для любого количества последних коммитов, которые вы хотите удалить.

И чтобы направить это изменение на удаленный, вам нужно сделать git push с параметром force (-f):

git push -f

Однако я не рекомендую выполнять любую команду git с параметрами -f или --hard, если есть новые коммиты на удаленном (Github) после того, как это совершает то, что вы хотите удалять. В этом случае всегда используйте git revert.

Ответ 3

Следующие работы для меня

git reset HEAD~n

Он удаляет последний n совершает локальное репо, поскольку HEAD^ удаляет только один. Если вам нужно удалить эти изменения с удаленного устройства, вам может потребоваться принудительное нажатие, поскольку вы будете за удаленным.

git push -f origin <branch>