¿Cómo detengo una confirmación de Git cuando VI está en la pantalla esperando un post de confirmación?

Le pedí a Git que realice un commit desde dentro de git bash. Ha sacado el VI como siempre lo hace.

Ahora deseo cancelar el compromiso, ¿cómo evito proceder con el compromiso desde este punto?

Tienes dos opciones:

  • Proporcione un post de compromiso vacío. Si se trata de una confirmación nueva y aún no ha guardado el post, simplemente puede usar :q! (salir sin save). Si ya ha guardado (o está modificando una confirmación anterior), simplemente elimine todo el post de logging y vuelva a savelo. Esto se puede hacer con ggdG + :wq en Vim.

  • Haga que el editor salga con un código de salida distinto de cero. En Vim, puede usar :cq (salir con un código de error).

Vale la pena señalar que siempre puede restablecer su copy de trabajo al estado en que estaba antes de la confirmación con git reset HEAD^ .

  • :q! no funciona cuando se modifica una confirmación. No actualiza el post de confirmación, pero ejecuta la modificación 🙁
  • :cq cancela por completo la enmienda.

Para resumir:

  • Al crear una nueva confirmación (es decir, git commit ), salga usando :q! .
  • Al enmendar (es decir, git commit --amend ) eliminar el post de confirmación (solo las primeras filas que no comienzan con un #), por ejemplo, manteniendo presionado v y usando las teclas de flecha para seleccionarlo y luego presionando Eliminar. Salir con :wq para aplicar cambios ! Si usa :q! los cambios se perderán y se usará el post de confirmación anterior.

Cuando se usa VIM, está bien en ambos casos salir con :cq – VIM saldrá con un código de error y la confirmación se cancelará.