Как остановить фиксацию Git, когда VI находится на экране, ожидая сообщения о фиксации?

Я попросил Git выполнить коммит из Git bash, он вызвал VI, как всегда.

Теперь я хочу отменить фиксацию, как мне избежать продолжения с фиксацией с этой точки?

Ответ 1

У вас есть два варианта:

  • Предоставьте пустое сообщение фиксации. Если это новая фиксация и вы еще не сохранили сообщение, вы можете просто использовать :q! (выйти без сохранения). Если вы уже сохранили (или вы исправляете предыдущую фиксацию), просто удалите все сообщение журнала и сохраните снова. Это можно сделать с помощью ggdG + :wq в Vim.

  • Выйдите из редактора с ненулевым кодом выхода. В Vim вы можете использовать :cq (выйти с кодом ошибки).

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

Ответ 2

  • :q! не работает при изменении фиксации. Он не обновляет commit, но он выполняет поправку:-(
  • :cq полностью отменяет поправку.

Ответ 3

Подводя итог:

  • При создании нового commit (i.e git commit) закройте с помощью :q!.
  • При изменении (т.е. git commit --amend) удалите сообщение фиксации (только первые несколько строк не, начиная С#), например, удерживая v и используя клавиши со стрелками для его выбора, а затем нажмите "Удалить". Закройте с помощью :wq, чтобы применить изменения! Если вы используете :q!, изменения будут потеряны, и будет использовано предыдущее сообщение фиксации.

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