Як зупинити компіляцію Git, коли VI на екрані чекає повідомлення про фіксацію?


203

Я попросив Git виконати зобов’язання в межах git bash, це підняло VI, як завжди.

Тепер я хочу скасувати зобов’язання, як я можу запобігти продовженню виконання зобов'язань з цього моменту?


Варто додати, що вам потрібно натиснути Esc до входу, :q!щоб вийти з vim.
M_Merciless

Відповіді:


331

У вас є два варіанти:

  • Надайте порожнє повідомлення про фіксацію. Якщо це нова фіксація, і ви ще не зберегли повідомлення, ви можете просто скористатися :q!(киньте без збереження). Якщо ви вже зберегли (або ви вносите зміни до попередньої комісії), просто видаліть все повідомлення журналу та збережіть знову. Це можна зробити за допомогою ggdG+ :wqу Vim.

  • Попросіть редактор вийти з ненульовим кодом виходу. У Vim ви можете використовувати :cq(киньте з кодом помилки).

Варто зауважити, що ви завжди можете скинути свою робочу копію до стану, в якому вона знаходилася до того, як здійснити комісію git reset HEAD^.


95
: cq - бізнес. Чомусь git плужить незалежно від того, чи використовую я: q!
Сірекс

2
git reset HEAD ^
відкине

2
: q! напевно, не працює, оскільки там вже є попередньо визначене повідомлення, ви просто редагуєте його.
Папіпо

Гіка: Якщо git reset HEAD^просить більше, ваша оболонка може інтерпретувати ^ як продовження рядка. Спробуйте git reset "HEAD^", git reset HEAD^^або git reset HEAD~1замість того, щоб за цю відповідь: stackoverflow.com/questions/14203952/git-reset-asks-more
Джейк Стівенса-Haas

75
  • :q!не працює при внесенні змін до комісії. Він не оновлює повідомлення про фіксацію, але виконує поправку :-(
  • :cq повністю відміняє поправку.

1
Я хотів би додати ще +1. Я був тут безліч разів, коли моя поправка сприймає неправильну комісію.
Вірмвуд

8

Підсумовуючи:

  • Під час створення нового комітету (тобто git commit) киньте використовувати :q!.
  • Під час внесення змін (тобто git commit --amend) видаліть повідомлення про фіксацію (лише перші кілька рядків, які не починаються з #), наприклад, утримуючи v та використовуючи клавіші зі стрілками, щоб вибрати його, а потім натиснути Видалити. Киньте, :wqщоб застосувати зміни ! Якщо ви користуєтеся, :q!зміни будуть втрачені, і попереднє повідомлення про фіксацію буде використано.

При використанні VIM нормально в обох випадках кинути з :cq- VIM вийде з кодом помилки, і комісія буде перервана.

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