Câu trả lời:
Rất hiếm khi có một lý do chính đáng để làm điều này, nhưng tham số này --allow-empty
dành cho các xác nhận trống (không có tệp nào thay đổi), ngược lại với --allow-empty-message
các thông báo cam kết trống. Bạn cũng có thể đọc thêm bằng cách gõ git help commit
hoặc truy cập tài liệu trực tuyến .
Mặc dù đối tượng cây (có hàm băm của riêng nó) sẽ giống hệt nhau, nhưng cam kết thực sự sẽ có hàm băm khác, vì có lẽ nó sẽ có dấu thời gian và thông báo khác, và chắc chắn sẽ có một cam kết cha mẹ khác. Tất cả ba yếu tố này được tích hợp vào git
thuật toán băm đối tượng.
Có là một vài lý do khiến bạn muốn có một empty cam kết (kết hợp một số ý kiến):
git
các lệnh mà không tạo ra các thay đổi tùy ý (thông qua Vaelus ).gitolite
(thông qua Tatsh ).Các chiến lược khác để thêm siêu dữ liệu vào cây cam kết bao gồm:
git notes
để liên kết một ghi chú có thể thay đổi trên đầu trang của một cam kết bất biến hiện có.commit --amend
nếu điều khiển từ xa không cho phép đẩy lực. Bằng cách này, bạn có thể cho phép các nhà phát triển thấy một thông điệp quan trọng đi kèm với cam kết trước đó.
Nếu bạn đang sử dụng một hệ thống như gitversion Sẽ rất có ý nghĩa khi thực hiện loại cam kết này. Bạn có thể có một cam kết dành riêng cho việc trả lại phiên bản chính bằng cách sử dụng + semver: nhận xét chính.
Có thể là một sự thay thế hợp lý hơn, bạn có thể tạo một thẻ chú thích (một cam kết có tên với một thông điệp). Xem git tag -a
tùy chọn.
dev
hình thức chi nhánhmaster
và sau đó là mộtfeat
chi nhánh ngay lập tứcdev
,feat
chi nhánh có vẻ như đến từmaster
chi nhánh vì không có cam kết phân biệt trêndev
chi nhánh màfeat
chi nhánh đến từ. Một cam kết trống khi bạn lần đầu tiên tạodev
chi nhánh giúp thiết lậpdev
chi nhánh vì nó sở hữu chi nhánh vô thời hạn độc lậpmaster
. Nói chung, nó hữu ích khi bạn sử dụng các nhánh làm lớp và tạo hai lớp từ một cam kết duy nhất