Как удалить коммиты с удаленного компьютера в Git
1 июня 2022 г.Манипуляции с историей очень распространены среди разработчиков, регулярно работающих с Git. Действительно, разработчикам часто приходится удалять коммиты из истории Git. К счастью, Git предоставляет множество команд, позволяющих сделать эту операцию возможной.
Приступаем к делу 😎.
Шаг 0 - Подготовка
Прежде чем манипулировать историей Git, убедитесь, что в вашем рабочем каталоге нет никаких изменений, используя команду git status.
Шаг 1. Локальное удаление коммитов
Чтобы удалить коммиты с удаленного сервера, сначала вам нужно будет удалить их из вашей локальной истории.
1.1 Для последовательных коммитов сверху
Если коммиты, которые вы хотите удалить, находятся вверху истории коммитов, используйте команду git reset --hard
с объектом HEAD
и количеством коммитов, которые вы хотите удалить.
``` ударить
git reset --hard HEAD~1
Эта команда удалит последнюю фиксацию.
``` ударить
git reset --hard HEAD~3
Эта команда удалит последние три коммита.
Вы также можете удалить до определенного коммита, используя хэш коммита, например:
``` ударить
git reset --hard <хэш>
1.2 Для непоследовательных коммитов
Однако если вы хотите удалить непоследовательные коммиты, вам нужно будет использовать интерактивную перебазировку.
- [ ] Найдите хэш последнего коммита, содержащий все коммиты, которые вы хотите удалить, с помощью команды
git reflog
.
- [ ] Запустите интерактивную перебазировку с помощью
git rebase -i <hash>
.
- [ ] На экране редактирования найдите строки фиксации, которые вы хотите удалить, и удалите их.
- [ ] Сохранить и выйти (может потребоваться разрешить конфликты)
- [ ] Завершите интерактивную перебазировку с помощью
git rebase --continue
или начните заново, прервав перебазирование.
Шаг 2 - Удалить коммиты с удаленного сервера
Чтобы удалить коммиты с удаленного сервера, вам нужно отправить свои локальные изменения на удаленный сервер с помощью команды git push.
``` ударить
git push origin HEAD --force
Поскольку ваша локальная история отличается от удаленной истории, вам нужно использовать опцию «force».
Последние мысли
Как видите, Git упрощает удаление коммитов с удаленного сервера.
Однако вам нужно быть осторожным при использовании команды git push
с опцией force
, потому что вы можете потерять прогресс, если не будете осторожны.
Спасибо за чтение!
Оригинал