Các móc git có được đẩy đến điều khiển từ xa khi tôi 'git push' không?


92

Nếu tôi tạo một tập lệnh hook mới trong kho lưu trữ cục bộ của mình trong repo / .git / hooks / post-commit và sau đó tôi chạy "git push" thì các hook có được đẩy đến điều khiển từ xa không? Sau đó, khi các nhà phát triển khác chạy "git pull" từ cùng một nguồn gốc, liệu họ có nhận được hook mới của tôi không?


3
Có lẽ điều này giúp đỡ stackoverflow.com/questions/3462955/…
René Höhle,

Liên quan (với các câu trả lời rất hữu ích): Có thể quản lý các tập lệnh Git hook cùng với kho lưu trữ không?
Marc.2377

Câu trả lời:


79

Không. Móc là mỗi kho lưu trữ và không bao giờ được đẩy. Tương tự, cấu hình repo cũng không được đẩy, cũng như không có bất kỳ thứ gì trong đó .git/infohoặc một số thứ khác.

Việc đẩy và kéo chỉ trao đổi các nhánh / thẻ và các đối tượng cam kết (và bất cứ thứ gì có thể truy cập được từ một cam kết, ví dụ như cây, đốm màu).


14
Có cách nào để có các móc ở trung tâm và kéo chúng trên mỗi bản sao, và áp dụng.
f1wade 13/12/16

3
@ f1wade Bạn có thể thêm một .githooksthư mục sẽ được kiểm soát phiên bản sau đó sym-link hoặc tạo các script hook wrapper từ bên trong .git. Nhân bản sẽ không tự động chuyển sang .githooksnhưng khi có dây, bạn có thể đẩy và kéo các phiên bản mới của tập lệnh hook.
Philip Couling

47

Không, móc git không được đẩy hoặc kéo, vì chúng không phải là một phần của mã kho lưu trữ.

Vui lòng tham khảo tài liệu để biết danh sách các móc đơn giản phía máy khách và phía máy chủ.

Nếu bạn muốn bật một số hook cho tất cả các máy khách sao chép hoặc kéo từ một kho lưu trữ nhất định, bạn phải thêm các hook vào codebase của mình và sau đó tạo tập lệnh của riêng bạn để sao chép chúng vào hoặc liên kết đến chúng từ đó repo/.git/hooks/.


4
nhưng làm thế nào để tập lệnh sao chép được gọi?
Adam Johns

6
@AdamJohns Nó được gọi bởi người dùng / nhà phát triển, có thể ở dạng một setup.shmà nhà phát triển chạy khi họ lần đầu tiên nhân bản kho lưu trữ. Sau đó, các cập nhật cho hook có thể tự động xảy ra bằng cách để hook chạy lại một tập lệnh cập nhật chúng sau mỗi lần kéo chẳng hạn. Vì vậy, bạn không cần phải dựa vào nhà phát triển để làm điều đó.
cm92,

3

Đáng buồn là không nhưng vì git 2.9, bạn có thể đặt chúng vào thư mục .githooks (như những người khác đã đề cập) và chạy:

git config --local core.hooksPath .githooks/

Vì vậy, không cần liên kết tượng trưng hoặc sao chép tệp.

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.