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ви можете вважати зручнішим почати виконувати команду ( cc), а потім використовувати git-commit-prev-message ( M-p) для переходу до попередніх повідомлень.

  • Якщо ви змінюєте лише останню комісію, ви можете скористатися поетапними змінами попереднього комітету за допомогою magit-commit-amend ( ca) або magit-commit-extend( ce). (Останній повторно використовує повідомлення про фіксацію, минаючи буфер COMMIT_EDITMSG.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.