Skip Git commit hook


506

Sto guardando un hook git che cerca le istruzioni di stampa nel codice Python. Se viene trovata un'istruzione print, impedisce il commit git.

Voglio ignorare questo hook e mi è stato detto che c'è un comando per farlo. Non sono riuscito a trovarlo. qualche idea?


1
Una soluzione più generica (funziona anche con comandi git diversi da commit): stackoverflow.com/questions/58337861/…
Gabriel Devillers,

Risposte:


869

Forse (dalla git commitpagina man ):

git commit --no-verify

-n  
--no-verify

Questa opzione ignora gli hook pre-commit e commit-msg. Vedi anche githooks (5) .

Come commentato da Blaise , -npuò avere un ruolo diverso per determinati comandi.
Ad esempio, git push -nè in realtà una spinta a secco.
Solo git push --no-verifysalterebbe il gancio.


Nota: Git 2.14.x / 2.15 migliora il comportamento --no-confirm:

Vedi commit 680ee55 (14 ago 2017) di Kevin Willford (``) .
(Unito da Junio ​​C Hamano - gitster- in commit c3e034f , 23 ago 2017)

commit: salta l'eliminazione dell'indice se non è presente alcun pre-commithook

" git commit" usato per scartare l'indice e rileggere dal filesystem nel caso in cui l' pre-commithook lo abbia aggiornato nel mezzo; questo è stato ottimizzato quando sappiamo che non eseguiamo l' pre-commithook.


Davi Lima sottolinea nei commenti del git cherry-picknon non supportano --no-verifica.
Quindi se un cherry-pick innesca un hook pre-commit, potresti, come in questo post del blog , commentare / disabilitare in qualche modo quell'hook per far sì che il tuo git cherry-pick continui.
Lo stesso processo sarebbe necessario in caso di git rebase --continue, dopo una risoluzione del conflitto di unione.


1
Per la scelta delle ciliegie consultare web-dev.wirt.us/info/git-drupal/git-continue-vs-no-verify
Davi Lima,

1
@DaviLima Grazie. Ho incluso il tuo commento nella risposta per la visibilità.
VonC

1
grazie, @Vonc. stesso accade per git rebase --continuebtw
Davi Lima

Ciao, nel mio caso, qualcuno nel mio team continua ad aggiornare la mia hookcartella con alcuni script pre-commit, è così fastidioso, c'è un modo per impedire che la mia hookcartella venga sostituita da git pull?
Zennichimaro,

@Zennichimaro Forse puoi copiare quella cartella hook repo altrove e impostare un hook post-merge ( git-scm.com/docs/githooks#_post_merge ) che rileverà se il pull influenza la cartella hook repo e proporrà di copiarne la contenuto nella cartella hook locale (al di fuori del repository): in questo modo, puoi almeno controllare se desideri che i tuoi hook vengano ignorati o meno da ciò che viene spinto dai tuoi colleghi.
VonC

22

Da man githooks:

pre-commit
Questo hook è invocato da git commit e può essere bypassato con l'opzione --no-confirm. Non accetta alcun parametro e viene invocato prima di ottenere il messaggio di registro di commit proposto e di effettuare un commit. L'uscita con uno stato diverso da zero da questo script provoca l'interruzione del commit git.


2

Per coloro very beginnersche hanno trascorso alcune ore per questo commit (con commente no verify) senza ulteriori problemi

git commit -m "Some comments" --no-verify
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.