У меня есть удаленный репозиторий Git, и мне нужно отбросить последний n
, который задерживается в холодном забвении.
Откат удаленного репозитория Git
Ответ 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 голом репозитории?