Quitter Vim sans appliquer les modifications dans Git
Lorsque j'utilise git commit --amend
ou git rebase -i
, vim s'ouvre pour moi de faire des changements. Si je puis changer mon esprit et quitter vim, sans aucune modification, un commit est toujours fait dans git reflog
.
Comment puis-je quitter l'éditeur sans s'engager à quoi que ce soit?
- Notez que
git reflog
est locale à cette copie de travail. C'est l'histoire chronologique de votre TÊTE plutôt que la logique de l'histoire. - git s'engage lorsqu'il détecte le fichier temp a changé (sauvés). Le plus simple est question ici est: "Comment puis-je sortir de vim sans enregistrer?" La réponse, comme gpojd l'a montré, est
:q!
. - git remplace la précédente livraison(le hash tag changements) même si je le quitter sans enregistrer.
- Double Possible de Comment puis-je arrêter un Git commit quand VI est sur l'écran en attente d'un message de commit?
Vous devez vous connecter pour publier un commentaire.
Pour obtenir git de ne pas faire un changement lors de l'exécution d'
git commit --amend
ougit rebase -i
.Il suffit de supprimer le message (et enregistrer). Tous git n'est de regarder pour un non vide message pour voir si la commettre qui s'est passé. Car il y a un message de commit (parce que vous avez commis quelque chose avant) git pense que ses un valide de validation ou de rebase.
Ce sera la force d'une erreur de Vim et il ne sera pas enregistrer les modifications. Lien à Vim manuel.
Lorsque vous n'avez pas fait les changements et les a sauvés,
:q!
pourrait suffire (dans une plaine s'engager; lorsque vous n'êtes pas de modification), mais si vous êtes comme moi, les chances sont que vous avez déjà (même inconsciemment) ont persisté le message modifié.Git (et d'autres outils tels que l'utilisation de Vim pour éditer un message) pour abandonner l'ensemble du processus (et ignorer toutes les modifications enregistrées au message) si l'éditeur se ferme avec un non-succès de statut de sortie. Vous pouvez le faire dans Vim avec la
:cq[uit]!
commande.:cq
, mais -1 pour:q!
- ce n'est pas correct, il ne cesse de la pré-modifié le message de validation, et s'applique à toute réelle mise en scène changements.le git application s'exécute l'application de l'éditeur, et si l'éditeur de l'application returnes à succès (non-zéro exitcode) le git de l'application détecte et arrête la poursuite du traitement.
dans vim, vous pouvez effectuer cette avec
:cq!
du vim manuel:
cela fonctionne pour svn, trop! la différence autant que je sache, entre svn et git est, que svn n'aime pas le vide des messages de commit et s'arrête lorsque vous quittez avec
:q!
(même si le exitcode est 0), mais pour git c'est ok. pour les deux il n'est pas ok, si l'éditeur donne un non-zéro exitcode.exitcodes sont une notion fondamentale dans les environnements unix/linux et facilement et de manière à informer l'appelant demande si everyhing était ok (exitcode 0) ou quelque chose s'est mal passé.