Откат удаленного репозитория Git

У меня есть удаленный репозиторий Git, и мне нужно отбросить последний n, который задерживается в холодном забвении.

Ответ 1

Вы можете использовать git revert <commit>… для всех n коммитов, а затем прокручивать, как обычно, без сохранения истории.

Или вы можете "откат" с помощью git reset --hard HEAD~n. Если вы используете публичный или общий репозиторий, вы можете расходиться и нарушать работу других, основываясь на исходной ветке. Git предотвратит это, но вы можете использовать git push -f для принудительного обновления.

Ответ 2

elmarco корректен... его предложение является лучшим для общих/публичных репозиториев (или, по крайней мере, для публичных веток). Если он не был разделен (или вы готовы нарушить других), вы также можете нажать конкретную ссылку:

git push origin old_master:master

Или, если есть конкретная команда SHA1 (скажем, 1e4f99e в сокращенной форме), вы хотели бы вернуться к:

git push origin 1e4f99e:master

Ответ 3

К счастью, я был в состоянии использовать Pat Notz solution, который полностью удалил нежелательную фиксацию. Однако изначально я получил ошибку

error: failed to push some refs to 'ssh://[email protected]'
To prevent you from losing history, non-fast-forward updates were rejected*

Но добавив параметр force (-f), перепишите эту ошибку

git push -f origin 52e36b294e:master

Ответ 4

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

git reset --soft <sha1>

Это работает, поскольку нет попытки изменить несуществующий рабочий каталог. Для получения дополнительной информации см. Оригинальный ответ:

Как я могу раскрыть последнее коммит в git голом репозитории?