Skip Git commit hooks

506

Je regarde un crochet git qui recherche les instructions print dans le code Python. Si une instruction print est trouvée, elle empêche la validation de git.

Je veux remplacer ce crochet et on m'a dit qu'il y avait une commande pour le faire. Je n'ai pas pu le trouver. Des pensées?

Ben
la source
1
Une solution plus générique (fonctionne également pour les commandes git différentes de commit): stackoverflow.com/questions/58337861/…
Gabriel Devillers

Réponses:

869

Peut-être (à partir de la git commitpage de manuel ):

git commit --no-verify

-n  
--no-verify

Cette option contourne les hooks pré-commit et commit-msg. Voir aussi githooks (5) .

Comme commenté par Blaise , -npeut avoir un rôle différent pour certaines commandes.
Par exemple, git push -nc'est en fait une poussée sèche.
Seul git push --no-verifysauterait le crochet.


Remarque: Git 2.14.x / 2.15 améliore le comportement --no-verify:

Voir commit 680ee55 (14 août 2017) de Kevin Willford (``) .
(Fusionné par Junio ​​C Hamano - gitster- en commit c3e034f , 23 août 2017)

commit: ignorer la suppression de l'index s'il n'y a pas de pre-commithook

" git commit" utilisé pour supprimer l'index et relire le système de fichiers au cas où le pre-commithook l'aurait mis à jour au milieu; cela a été optimisé lorsque nous savons que nous n'exécutons pas le pre-commitcrochet.


Davi Lima souligne dans les commentaires du git cherry-pickne pas soutenir --no-Verify.
Donc, si un cherry-pick déclenche un crochet de pré-validation, vous pourriez, comme dans cet article de blog , devoir commenter / désactiver en quelque sorte ce crochet pour que votre git cherry-pick puisse continuer.
Le même processus serait nécessaire en cas de git rebase --continue, après une résolution de conflit de fusion.

VonC
la source
1
Pour la sélection de cerises, voir web-dev.wirt.us/info/git-drupal/git-continue-vs-no-verify
Davi Lima
1
@DaviLima Merci. J'ai inclus votre commentaire dans la réponse pour la visibilité.
VonC
1
merci @Vonc. il en va de même pour git rebase --continuebtw
Davi Lima
Salut, dans mon cas, quelqu'un de mon équipe continue de mettre à jour mon hookdossier avec des scripts de pré-validation, c'est tellement ennuyeux, est-il possible d'empêcher mon hookdossier d'être annulé par git pull?
Zennichimaro
@Zennichimaro Vous pouvez peut-être copier ce dossier de hook de dépôt ailleurs et configurer un hook de post-fusion ( git-scm.com/docs/githooks#_post_merge ) qui détectera si la traction affecte le dossier de hook de dépôt et proposera de copier son contenu dans votre dossier de hook local (en dehors du dépôt): de cette façon, vous pouvez au moins contrôler si vous voulez que vos hooks soient remplacés ou non par ce qui est poussé par vos collègues.
VonC
22

De man githooks:

pre-commit
Ce hook est invoqué par git commit, et peut être contourné avec l'option --no-verify. Elle ne prend aucun paramètre et est invoquée avant d'obtenir le message de journal de validation proposé et d'effectuer une validation. Quitter avec un statut différent de zéro à partir de ce script entraîne l'abandon de la validation git.

Chris Eberle
la source
2

Pour ceux very beginnersqui ont passé quelques heures pour ce commit (avec commentet no verify) sans autre problème

git commit -m "Some comments" --no-verify
Moumit
la source