Как получить код предыдущего коммита обратно в 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) нажмите кнопку "нажать" и в диалоговом окне нажмите "Опции" и установите флажок "Принудительно с арендой", это приведет к обновлению сервера до новой фиксации.

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

Если вы уверены, что вам это не понадобится, вы можете удалить "неправильную" ветку.

Другие вопросы по тегам