Как получить код предыдущего коммита обратно в GIT, который уже был передан на сервер
Я сделал некоторые изменения в своем коде, а затем сделал: git add . git commit git push мастер происхождения.
Теперь я понимаю, что допустил некоторые ошибки и хочу вернуть код предыдущего коммита, а затем повторно внести изменения и отправить их обратно на сервер.
Это вывод журнала git:
commit 3254c7668610a86eb930798c3c50fb5e1c298cbf
Author: Subhayan Bhattacharya <subhayan.bhattacharya@hpe.com>
Date: Wed Sep 6 00:53:39 2017 -0700
Made changed to downloadpkgapp.sh
commit c6577344eaa7ed1ac7fc911892cf85f66a0ac0b9
Author: Subhayan Bhattacharya <subhayan.bhattacharya@hpe.com>
Date: Wed Aug 16 02:56:17 2017 -0700
commiting changes to file CallProgram.py
commit 3839fa51edb20812c10d96f40b36aaa4fada9200
Author: dheeraj.mittal <dheeraj.mittal@hpe.com>
Date: Sun Jun 11 11:17:41 2017 +0200
added execute permission command for application package
Кто-нибудь, пожалуйста, помогите мне с тем же. У меня проблемы с пониманием GIT. Так что, если кто-то может также объяснить, какие шаги предлагаются, это было бы здорово.
3 ответа
Если у вас есть 3 коммита (скажем, A, B и C) на ветке master
подтолкнуть их к пульту (скажем origin
) и затем решите, что вы допустили ошибку с C и хотите ее исправить, вы должны сначала убедиться, что никто больше не потянул ветку. Если они есть, ваш коммит с ними.
Если нет, вы можете сначала сбросить master
филиал в B
вот так,
git reset --hard B
Тогда принудительный толчок master
снова используя
git push --force origin master
Однако это меняет историю проекта, поэтому делайте это только в том случае, если вы понимаете, каковы последствия.
Будьте осторожны, когда отправляете в удаленный репозиторий, потому что другие могут получить ваш неверный коммит.
Я думаю, вам следует просто оставить его там и выполнить некоторую операцию возврата.
Во-первых, если ваш коммит просто нормальный, вы можете использовать git revert <last-commit>
просто отменить ваши изменения и отправить в хранилище.
Во-вторых, если ваш коммит является коммитом слияния, вы должны быть внимательны. Здесь вы должны использовать git revert <last-commit> -m 2
чтобы вернуть ваше состояние в исходную ветку. Вы можете изучить Отмена слияния или git revert --help
узнать что-то об этом.
Я предлагаю вам использовать графический интерфейс git, такой как Git Extensions. Будет проще следить за происходящим...
С помощью Git Extensions вы можете делать:
1) убедитесь, что у вас нет изменений, которые не были внесены. Включите любое изменение в коммит, чтобы быть уверенным, что вы его не потеряете
2) создайте новую ветку в вашем последнем коммите: нажмите ваш последний коммит, нажмите правую кнопку и выберите "Создать новую ветку". В диалоговом окне не выбирайте "Оформить заказ после создания опции". Назовите новую ветку что-то вроде "неверно"
3) выберите ваш последний правильный коммит и нажмите правую кнопку и выберите "Сбросить текущую ветку сюда". Выберите "Hard" тип сброса.
4) переделайте все модификации кода с коммитами, которые вам нужны
5) нажмите кнопку "нажать" и в диалоговом окне нажмите "Опции" и установите флажок "Принудительно с арендой", это приведет к обновлению сервера до новой фиксации.
Будьте осторожны!: если кто-то извлек ваши изменения с вашими предыдущими коммитами, вы будете сильно путаться, если вы измените историю коммитов на сервере. Если есть вероятность того, что у кого-то есть ваш предыдущий коммит, вы должны сохранить историю ваших комитетов с ошибками и внести исправления в новые коммиты.
Если вы уверены, что вам это не понадобится, вы можете удалить "неправильную" ветку.