Magit - отменить последний коммит - история манипулирования

12

Этот вопрос StackOverflow предлагает лучшие решения / подходы для отмены последних коммитов.

Я начал использовать Magit пару недель назад, и после просмотра всей его документации у меня все еще нет определенного / лучшего способа отменить ошибочно совершенное изменение.

Например:
для отмены и повтора последнего коммита, который мы можем использовать:

$ git commit -m "Something terribly misguided"
$ git reset HEAD~
<< edit files as necessary >>
$ git add ... 
$ git commit -c ORIG_HEAD # To keep the same commit message

Какой должен быть лучший рабочий процесс для воспроизведения этой процедуры с помощью Magit ?

Александро де Оливейра
источник

Ответы:

17

Вы можете использовать magit-reset(по умолчанию связано с x). Фиксация в точке будет использоваться по умолчанию для приглашения, но вы можете ввести любое значение ревизии, которое вы хотите (здесь "HEAD ~").

Команды сброса описаны в разделе «Сброс» данного руководства: https://magit.vc/manual/magit/Resetting.html.

Чтобы повторно использовать сообщение фиксации, вы можете использовать =Cопцию во всплывающем окне фиксации. К сожалению, в настоящее время подсказка не предлагает никаких значений завершения (я думаю, что она должна, по крайней мере, предлагать ORIG_HEAD), но перед сбросом вы можете поместить хэш текущего коммита в список уничтожений (например, с C-wпомощью строки "Head:" буфера состояния), а затем, после сброса, восстановите его как значение для =Cопции.


Некоторые дополнительные комментарии:

  • Вместо использования =Cвы можете найти более удобным начать с commit ( cc) и затем использовать git-commit-prev-message ( M-p) для циклического просмотра предыдущих сообщений.

  • Если вы изменяете только последний коммит, вы можете прикрепить поэтапные изменения к предыдущему коммиту с помощью magit-commit-amend ( ca) или magit-commit-extend( ce). (Последний повторно использует сообщение фиксации, минуя буфер COMMIT_EDITMSG.)

Кайл Мейер
источник