Omitir ganchos de confirmación de Git

506

Estoy mirando un gancho git que busca declaraciones de impresión en código Python. Si se encuentra una declaración de impresión, evita la confirmación de git.

Quiero anular este gancho y me dijeron que hay un comando para hacerlo. No he podido encontrarlo. ¿Alguna idea?

Ben
fuente
1
Una solución que es más genérica (también funciona para comandos git diferentes a commit): stackoverflow.com/questions/58337861/…
Gabriel Devillers

Respuestas:

869

Quizás (de la git commitpágina del manual ):

git commit --no-verify

-n  
--no-verify

Esta opción omite los enlaces pre-commit y commit-msg. Ver también githooks (5) .

Como se ha comentado por Blaise , -npuede tener un papel diferente para ciertos comandos.
Por ejemplo, en git push -nrealidad es un impulso en seco.
Solo git push --no-verifysaltaría el anzuelo.


Nota: Git 2.14.x / 2.15 mejora el comportamiento --no-verificar:

Ver commit 680ee55 (14 de agosto de 2017) por Kevin Willford (``) .
(Fusionada por Junio ​​C Hamano - gitster- en commit c3e034f , 23 de agosto de 2017)

commit: omita descartar el índice si no hay pre-commitgancho

" git commit" solía descartar el índice y volver a leerlo desde el sistema de archivos en caso de que el pre-commitgancho lo haya actualizado en el medio; Esto se ha optimizado cuando sabemos que no ejecutamos el pre-commitenlace.


Davi Lima señala en los comentarios del git cherry-pickno no apoyan --no-Verify.
Entonces, si una selección de cereza activa un enlace previo al compromiso, es posible que, como en esta publicación de blog , tenga que comentar / desactivar de alguna manera ese enlace para que su selección de cereza git continúe.
El mismo proceso sería necesario en caso de una git rebase --continue, después de una resolución de conflicto de fusión.

VonC
fuente
1
Para la selección de cereza, consulte web-dev.wirt.us/info/git-drupal/git-continue-vs-no-verify
Davi Lima
1
@DaviLima Gracias. He incluido tu comentario en la respuesta para visibilidad.
VonC
1
gracias, @Vonc. lo mismo sucede por git rebase --continuecierto
Davi Lima
Hola, en mi caso, alguien en mi equipo sigue actualizando mi hookcarpeta con algunos scripts previos a la confirmación, es tan molesto, ¿hay alguna manera de evitar que mi hookcarpeta sea anulada por git pull?
Zennichimaro
@Zennichimaro Tal vez pueda copiar esa carpeta de enlace de repositorio en otro lugar, y configurar un enlace posterior a la fusión ( git-scm.com/docs/githooks#_post_merge ) que detectará si la extracción afecta a la carpeta de enlace de repos y propondrá copiar su contenido a su carpeta de enlace local (fuera del repositorio): de esa manera, al menos puede controlar si desea que sus enlaces sean anulados o no por lo que presionan sus colegas.
VonC
22

De man githooks:

pre-commit
Este enlace es invocado por git commit, y se puede omitir con la opción --no-verificar. No toma ningún parámetro y se invoca antes de obtener el mensaje de registro de confirmación propuesto y realizar una confirmación. Salir con un estado distinto de cero de este script hace que git commit se cancele.

Chris Eberle
fuente
2

Para aquellos very beginnersque han pasado pocas horas para este compromiso (con commenty no verify) sin más problemas

git commit -m "Some comments" --no-verify
Moumit
fuente