Bạn có thể sử dụng tiện ích cam kết trước để thực hiện việc này. Nó có một no-commit-to-branchhook tích hợp có thể được sử dụng để ngăn chặn các commit tới một hoặc nhiều nhánh.
Thiết lập
Quá trình thiết lập cơ bản là:
- Cài đặt bằng pip hoặc brew (hướng dẫn tại https://pre-commit.com/#install )
- Tạo một
.pre-commit-config.yamltệp trong thư mục gốc của dự án của bạn (xem bên dưới để biết bản nháp đầu tiên)
- Cài đặt hook vào cấu hình git của bạn bằng cách chạy
pre-commit install.
Cấu hình cơ bản để bảo vệ các nhánh
Đây là một cấu hình cơ bản chỉ bao gồm no-commit-to-branchhook:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.3.0
hooks:
- id: no-commit-to-branch
args: ['--branch', 'master']
Nếu bạn muốn bảo vệ nhiều nhánh, bạn có thể sử dụng bao gồm nhiều --branchargs trong danh sách đối số:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.3.0
hooks:
- id: no-commit-to-branch
args: ['--branch', 'master', '--branch', 'staging']
Đây không phải là tất cả quá mức cần thiết?
Pre-commit có nhiều hook tích hợp khác và một bộ sưu tập lớn các hook do cộng đồng xây dựng sẽ biến đổi cách bạn dọn dẹp và xác thực các cam kết của mình. Lý do tôi đề cập đến điều này là vì, mặc dù công cụ này có thể quá mức cần thiết để chỉ ngăn chặn các cam kết đối với một nhánh được bảo vệ, nhưng nó có nhiều tính năng khác làm cho nó trở thành một bổ sung hấp dẫn và đơn giản cho bất kỳ dự án git nào.
git committạo ra một cái mới, không có chuyển tiếp nhanh xảy ra. Có vẻ như bạn chỉ muốn cấm các commit thông thường khi nhánh hiện tạimaster, trong trường hợp đó, hãy nhìn vàopre-commithook.