Отменить несколько Git коммитов подряд, но сохранить все изменения - PullRequest
1 голос
/ 19 сентября 2019

Я вижу много вопросов / статей, описывающих, как отменить коммит, но сохранить изменения.Что, если я сделал несколько восторженных (читай: опрометчивых) коммитов в неправильную ветку?

Вот ситуация на картинке:

A -> B -> C

Все эти изменения находятся в основной ветви.

A - это последний раз, когда основная ветвь была правильно синхронизирована с удаленной.

B был набор изменений, которые я сделал.Изменения хороши, и я хочу сохранить их, но фиксация их в основной ветке была ошибкой.

C был еще один набор изменений, которые я сделал.Они также были привержены мастеру.Глупый!Я хочу сохранить эти изменения, но не на главном.

Как вернуть основную ветвь в состояние A, сохраняя все изменения как B, так и C, чтобы я моготправить их все в новую ветку с исправлениями функций?

Я хочу увидеть это:

A -> (all changes from B and C as unstaged changes)

Примечание: Я не нажалпока ничего удаленного, так что все это безопасно в моем локальном репо.

1 Ответ

4 голосов
/ 19 сентября 2019

Вам необходимо переместить указатель HEAD обратно на A, который вызывает команду reset:

git reset A

Эта форма reset (--mixed, по умолчанию) примет изменения, которые вы «переустанавливали», и оставит их в вашем рабочем каталоге, в то время как ваша ветвь master укажет на A.

Итак, после запускаэта команда, git diff должна показывать содержимое B и C.

После этого вы можете перенести эти не поэтапные изменения в отдельную ветку:

git checkout -b feature-fix
git add .
git commit -m "changes"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...