Bỏ qua Git cam kết móc


505

Tôi đang xem một hook git tìm kiếm các câu lệnh in bằng mã Python. Nếu một câu lệnh in được tìm thấy, nó sẽ ngăn chặn cam kết git.

Tôi muốn ghi đè cái móc này và tôi được cho biết rằng có một lệnh để làm như vậy. Tôi đã không thể tìm thấy nó. Có suy nghĩ gì không?


1
Một giải pháp chung chung hơn (cũng hoạt động đối với các lệnh git khác với commit): stackoverflow.com/questions/58337861/ mẹo
Gabriel Devillers

Câu trả lời:


868

Có lẽ (từ git committrang nam ):

git commit --no-verify

-n  
--no-verify

Tùy chọn này bỏ qua các hook pre-commit và commit-messenger. Xem thêm githooks (5) .

Theo nhận xét của Blaise , -ncó thể có một vai trò khác nhau đối với các lệnh nhất định.
Ví dụ, git push -nthực sự là một cú đẩy khô.
Chỉ git push --no-verifysẽ bỏ qua các hook.


Lưu ý: Git 2.14.x / 2.15 cải thiện hành vi --no-verify:

Xem cam kết 680ee55 (14 tháng 8 năm 2017) của Kevin Willford (``) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết c3e034f , ngày 23 tháng 8 năm 2017)

commit: bỏ qua việc loại bỏ chỉ mục nếu không có pre-commithook

" git commit" Được sử dụng để loại bỏ chỉ mục và đọc lại từ hệ thống tập tin chỉ trong trường hợp pre-commithook đã cập nhật nó ở giữa; điều này đã được tối ưu hóa khi chúng tôi biết rằng chúng tôi không chạy pre-commithook.


Davi Lima chỉ ra trong các ý kiến của git cherry-pickkhông không hỗ trợ --no-xác minh.
Vì vậy, nếu cherry-pick kích hoạt hook pre-commit, bạn có thể, như trong bài đăng trên blog này , phải bình luận / vô hiệu hóa bằng cách nào đó hook đó để tiếp tục git cherry-pick của bạn.
Quá trình tương tự sẽ là cần thiết trong trường hợp a git rebase --continue, sau khi giải quyết xung đột hợp nhất.



1
@DaviLima Cảm ơn bạn. Tôi đã bao gồm nhận xét của bạn trong câu trả lời cho tầm nhìn.
VonC

1
cảm ơn, @Vonc. điều tương tự cũng xảy ra với git rebase --continuebtw
Davi Lima

Xin chào, trong trường hợp của tôi, một người nào đó trong nhóm của tôi liên tục cập nhật hookthư mục của tôi với một số tập lệnh xác nhận trước, điều đó thật khó chịu, có cách nào để tôi có thể ngăn hookthư mục của mình bị ghi đè bởi git pull không?
Zennichimaro

@Zennichimaro Có lẽ bạn có thể sao chép thư mục hook repo đó ở nơi khác và thiết lập hook sau hợp nhất ( git-scm.com/docs/githooks#_post_merge ) sẽ phát hiện xem pull có ảnh hưởng đến thư mục hook repo không và sẽ đề xuất sao chép nội dung vào thư mục hook cục bộ của bạn (bên ngoài repo): bằng cách đó, ít nhất bạn có thể kiểm soát nếu bạn muốn hook của mình bị ghi đè hoặc không bởi những gì được đẩy bởi các đồng nghiệp của bạn.
VonC

22

Từ man githooks:

pre-commit
Móc này được gọi bởi git commit và có thể được bỏ qua với tùy chọn --no-verify. Nó không có tham số và được gọi trước khi nhận được thông điệp nhật ký cam kết được đề xuất và thực hiện một cam kết. Thoát khỏi trạng thái khác không từ tập lệnh này khiến cam kết git hủy bỏ.


2

Đối với những very beginnersngười đã dành vài giờ cho cam kết này (với commentno verify) không có vấn đề gì thêm

git commit -m "Some comments" --no-verify
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.