Пропустить Git совершить хуки


506

Я смотрю на git hook, который ищет операторы print в коде Python. Если оператор print найден, он предотвращает коммит git.

Я хочу переопределить этот хук, и мне сказали, что для этого есть команда. Я не смог найти его. Какие-нибудь мысли?


1
Более общее решение (также работает для команд git, отличных от commit): stackoverflow.com/questions/58337861/…
Габриэль Девиллерс

Ответы:


869

Может быть (со git commitстраницы руководства ):

git commit --no-verify

-n  
--no-verify

Эта опция обходит хуки pre-commit и commit-msg. Смотрите также githooks (5) .

Как отметил на Блейза , -nможет иметь различную роль для некоторых команд.
Например, git push -nна самом деле это толчок без пробега.
Только git push --no-verifyбы пропустить крючок.


Примечание: Git 2.14.x / 2.15 улучшает поведение --no-verify:

См. Коммит 680ee55 (14 августа 2017 г.) Кевина Уилфорда (``) .
(Объединено Junio ​​C Hamano - gitster- в коммите c3e034f , 23 августа 2017 г.)

commit: пропустить сброс индекса, если нет pre-commitхука

« git commit» используется для удаления индекса и повторного чтения из файловой системы на тот случай, если pre-commitхук обновил его в середине; это было оптимизировано, когда мы знаем, что не запускаем pre-commitхук.


Дави Лима указывает в комментарияхgit cherry-pick никак не поддерживает --no-проверяй.
Так что, если вишневый выбор запускает ловушку перед фиксацией, вы, как и в этом сообщении в блоге , должны каким-то образом комментировать / отключать этот ловушку, чтобы ваш git cherry-pick мог продолжить.
Тот же процесс будет необходим в случае git rebase --continue, после разрешения конфликта слияния.



1
@DaviLima Спасибо. Я включил ваш комментарий в ответ для наглядности.
VonC

1
спасибо, @Vonc. то же самое происходит между git rebase --continueпрочим
Дави Лима

Привет, в моем случае, кто-то в моей команде продолжает обновлять мою hookпапку некоторыми сценариями предварительной фиксации, это так раздражает, есть ли способ предотвратить hookпереопределение моей папки с помощью git pull?
Зеннихимаро

@Zennichimaro Возможно, вы сможете скопировать эту папку ловушек репо в другое место и настроить ловушку после слияния ( git-scm.com/docs/githooks#_post_merge ), которая определит, влияет ли вытягивание на папку ловушек репо, и предложит скопировать ее содержание в вашей локальной папке перехвата (вне репо): таким образом, вы можете по крайней мере контролировать, хотите ли вы перехватывать перехваты или нет тем, что подталкивают ваши коллеги.
VonC

22

От man githooks:

pre-commit
Этот хук вызывается git commit, и его можно обойти с помощью опции --no-verify. Он не принимает никаких параметров и вызывается перед получением предложенного сообщения журнала фиксации и выполнением фиксации. Выход с ненулевым статусом из этого скрипта приводит к отмене коммита git.


2

Для тех, very beginnersкто потратил несколько часов для этого коммита (с commentи no verify) без дальнейших проблем

git commit -m "Some comments" --no-verify
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.