Откат к предыдущему коммиту

Messages
1,701
Reaction score
288
Website
tehadm.ru
1. Откат к состоянию определенного коммита (временно)

Если вы хотите вернуться к предыдущему коммиту, но не удалять текущие коммиты, вы можете использовать git checkout. Однако стоит учесть, что это поместит вас в состояние "отдельной ветки" (detached HEAD), и любые изменения будут потеряны, если вы не создадите новую ветку.
git checkout <commit_hash>
здесь <commit_hash> — это SHA-1 хэш коммита, к которому вы хотите вернуться. Чтобы вернуться обратно на основную ветку, используйте:
git checkout <branch_name>

2. Восстановление состояния ветки на предыдущем коммите (твердый откат)

Если вы хотите отменить все изменения после определенного коммита и вернуть ветку в то состояние, в котором она была, вы можете использовать git reset. Будьте осторожны: этот метод удаляет изменения в рабочем каталоге и в индексе.
git reset --hard <commit_hash>

3. Создание нового коммита для отмены изменений (безопасный способ)

Если вы хотите оставить коммиты, но откатить изменения, вы можете использовать git revert. Эта команда создаст новый коммит, который отменяет изменения, внесенные в указанный коммит.
git revert <commit_hash>

Примечания:
- Перед использованием git reset --hard всегда стоит убедиться, что вы не потеряете важные изменения. Это действие не может быть отменено.
- Используйте git log, чтобы посмотреть историю коммитов и найти необходимый хэш.
 
После того как вы откатили изменения в локальном репозитории с помощью git reset, git revert или другого подхода, вам необходимо отправить изменения на GitHub. Процесс будет зависеть от того, какой метод вы использовали для отката.

1. Отправка изменений на GitHub после git reset

Если вы использовали git reset --hard, и вы хотите переписать историю на удаленном репозитории, вы можете использовать команду git push с флагом --force (или -f):
git push origin <branch_name> --force
Обратите внимание, что использование --force может привести к потере коммитов, если другие разработчики работают с этой же веткой, так что будьте осторожны и предупреждайте команду перед выполнением этой команды.

2. Отправка изменений на GitHub после git revert

Если вы использовали git revert, просто выполните обычный git push:
git push origin <branch_name>
Это создаст новый коммит в вашей ветке, который отменит изменения, внесенные в предыдущем коммите. Это безопасный способ, так как он не переписывает историю.

Пример пошагового процесса

1. Откатитесь к предыдущему коммиту с помощью нужной команды (например, git revert <commit_hash>).
2. Проверьте статус и коммиты:
git status
git log
3. Если вы использовали git revert, просто выполните git push. Если использовали git reset, выполните git push --force.
Code:
# Для revert
git push origin <branch_name>

Code:
# Для reset
git push origin <branch_name> --force

В результате указанные изменения будут отправлены на ваш репозиторий на GitHub.
 
Back
Top