Откат удаленного репозитория Git - PullRequest
108 голосов
/ 26 февраля 2009

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

Ответы [ 4 ]

132 голосов
/ 26 февраля 2009

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

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

37 голосов
/ 26 февраля 2009

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

git push origin old_master:master

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

git push origin 1e4f99e:master
8 голосов
/ 21 мая 2014

К счастью, я смог использовать Решение Пэт Нотца , которое полностью удалило нежелательный коммит Однако изначально я получил ошибку

error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*

Но добавление опции force (-f) перезапишет эту ошибку

git push -f origin 52e36b294e:master
3 голосов
/ 13 июня 2013

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

git reset --soft <sha1>

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

Как мне отменить последний коммит в репозитории git bare?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...