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-branch
hook 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.yaml
tệ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-branch
hook:
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 --branch
args 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 commit
tạ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-commit
hook.