sharingStorage

git error 해결법 - husky > pre-commit hook failed (add --no-verify to bypass) 본문

git

git error 해결법 - husky > pre-commit hook failed (add --no-verify to bypass)

Anstrengung 2022. 3. 3. 15:48

git commit -m "message" 명령어 사용시 error 발생

 

error code :

husky > pre-commit hook failed (add --no-verify to bypass)

 

원인:

원인을 짚기 전에 husky와 git hook이 뭔지 알아야 합니다. 

 

husky는 프론트엔드 개발 환경에서 git hook을 손쉽게 제어하도록 도와주는 npm  모듈입니다.

만약 프로젝트가 모듈 의존성을 관리하기 위해 npm을 사용하고 있다면 git hooks를 적용하게 끔 강제하기 위해서 사용하는 좋은 선택지가 될 수 있습니다. 

 

git hook이란 말그대로 갈고리 같은 것인데요. git을 쓰다가 특정 이벤트 (커밋, 푸쉬)가 벌어졌을 때 그 순간에 갈고리를 걸어서 특정 스크립트가 실행되도록 도와주는 것이 git hook입니다.

크게 클라이언트 훅서버 훅으로 나뉘는데 클라이언트 훅은 커밋, Merge가 발생하거나 push가 발생하기 전 클라이언트에서 실행하는 훅이고, 서버 훅은 git repository로 push가 발생했을 때 서버에서 실행하는 훅입니다.

 

클라이언트 훅은 세가지 훅으로 분류할 수 있고 git commit 명령으로 커밋을 할 때 실행하는 훅인 커밋 워크플로 훅, git am 명령으로 이메일을 통해 patch 파일을 적용할 때 실행하는 훅인 이메일 워크플로 훅, Rebase, Merge, Push 와 같은 이벤트를 실행할 때 실행하는 훅을 기타 훅 이라고 합니다. 

분류에 따른 훅을 아래 표를 보고 참고 할 수 있습니다. 

 

커밋
워크플로 훅
pre-commit commit 을 실행하기 전에 실행
prepare-commit-msg commit 메시지를 생성하고 편집기를 실행하기 전에 실행
commit-msg commit 메시지를 완성한 후 commit 을 최종 완료하기 전에 실행
post-commit commit 을 완료한 후 실행
이메일
워크플로 훅
applypatch-msg git am 명령 실행 시 가장 먼저 실행
pre-applypatch patch 적용 후 실행하며, patch 를 중단시킬 수 있음
post-applypatch git am 명령에서 마지막으로 실행하며, patch 를 중단시킬 수 없음
기타 훅 pre-rebase Rebase 하기 전에 실행
post-rewrite git commit –amend, git rebase 와 같이 커밋을 변경하는 명령을 실행한 후 실행
post-merge Merge 가 끝나고 나서 실행
pre-push git push 명령 실행 시 동작하며 리모트 정보를 업데이트 하고 난 후 리모트로 데이터를 전송하기 전에 실행. push 를 중단시킬 수 있음

 

 

해결: 

① 간단하고 일시적인 방법으로는 

git commit -m "message" --no-verify

위와 같은 명령어를 사용하면 되지만 이것은 hook을 무시하는 명령어 이기에 규칙을 어길 수도 있습니다.

 

②  .git/hooks폴더를 삭제한 다음 npm install 명령어를 통해 husky를 다시 설치합니다.

이것 역시 husky생성 파일 및 .git/hook/ 파일과 충돌할 가능성 있습니다

 

 

 

 

Reference 

Comments