@ajlee4

Как удалить последний коммит с сервера с сохранением на локали?

Сделал коммит и запушил на сервер очень много лишнего кода. Хочу удалить на сервере этот коммит но чтобы локально у меня на компьютере все сохранилось, как я могу это сделать?
  • Вопрос задан
  • 1793 просмотра
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
git reset --soft HEAD^1 # откатываем локальную ветку, но не трогаем рабочую копию кода
git push --force origin HEAD # заменяем ветку во внешнем репозитории

Но этот рецепт применим только если это личная ветка и коллеги её ещё не успели использовать.

Правильней будет отменять правки а не «удалять» коммиты
git revert HEAD # отменяем предыдущую правку
git push # отправляем во внешний репо
git revert --no-commit HEAD # отменяем отмену, но не коммитим сразу
# дальше оформляем уже правильный коммит, без ненужных файлов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
glaphire
@glaphire
PHP developer
Возможно есть элегантный способ, но способ "влоб" такой:
забекапить локальную ветку с новым названием;
в оригинальной локальной ветке сделать git reset --hard HEAD^;
Если что - почистить ветку по полного состояния прошлого коммита и сделать git -f push origin;
Проверить что теперь на сервере все как надо;
Удалить оригинальную локальную ветку;
Переименовать ветку локального бекапа в старую оригинальную ветку;
Настроить upsteam новой локальной ветки на серверную.

Предпоследний шаг необязателен, просто чтобы все максимально было как раньше
Ответ написан
Комментировать
egor_nullptr
@egor_nullptr
git checkout -b backup
git checkout -
git reset --hard HEAD^1
git push --force origin HEAD
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы