Comment puis-je arrêter une validation Git lorsque le VI est à l'écran en attente d'un message de validation?

203

J'ai demandé à Git d'effectuer un commit à partir de git bash, il a fait apparaître VI comme il le fait toujours.

Je souhaite maintenant annuler la validation, comment puis-je empêcher de poursuivre la validation à partir de ce point?

Ben Aston
la source
Il convient d'ajouter que vous devez appuyer sur Esc avant d'entrer :q!pour quitter vim.
M_Merciless

Réponses:

332

Vous avez deux options:

  • Fournissez un message de validation vide. S'il s'agit d'un nouveau commit et que vous n'avez pas encore enregistré le message, vous pouvez simplement utiliser :q!(quitter sans enregistrer). Si vous avez déjà enregistré (ou que vous modifiez un commit précédent), supprimez simplement l'intégralité du message du journal et enregistrez à nouveau. Cela peut être fait avec ggdG+ :wqdans Vim.

  • Demandez à l'éditeur de quitter avec un code de sortie différent de zéro. Dans Vim, vous pouvez utiliser :cq(quitter avec un code d'erreur).

Il convient de noter que vous pouvez toujours réinitialiser votre copie de travail à l'état dans lequel elle se trouvait avant la validation git reset HEAD^.

Eugene Yarmash
la source
96
: cq est l'entreprise. Pour une raison quelconque, git se débrouille, peu importe si j'utilise: q!
Sirex
2
git reset HEAD ^
annulerait
2
: q! ne fonctionne probablement pas car il y a déjà un message prédéfini, vous ne faites que le modifier.
Papipo
Hiccup: si vous en git reset HEAD^demandez plus, votre shell peut interpréter ^ comme une continuation de ligne. Essayez git reset "HEAD^", git reset HEAD^^ou à la git reset HEAD~1place selon cette réponse: stackoverflow.com/questions/14203952/git-reset-asks-more
Jake Stevens-Haas
76
  • :q!ne fonctionne pas lors de la modification d'un commit. Il ne met pas à jour le message de validation, mais il exécute l'amendement :-(
  • :cq annule complètement l'amendement.
Daniel Pinyol
la source
1
J'aimerais pouvoir ajouter un autre +1. Je suis ici depuis des dizaines d'années lorsque mon amendement prend le mauvais engagement.
Wyrmwood
8

Pour résumer:

  • Lorsque vous créez un nouveau commit (c.- git commità-d :q!. ), Quittez l'utilisation .
  • Lors de la modification (c'est-à-dire git commit --amend), supprimez le message de validation (uniquement les premières lignes ne commençant pas par un #), par exemple en maintenant v et en utilisant les touches fléchées pour le sélectionner, puis en appuyant sur Supprimer. Quittez avec :wqpour appliquer les modifications ! Si vous utilisez, :q!les modifications seront perdues et le message de validation précédent sera utilisé.

Lorsque vous utilisez VIM, il est correct dans les deux cas de quitter avec :cq- VIM se fermera avec un code d'erreur et la validation sera abandonnée.

Maciej Piekarski
la source