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-emptydà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-messagecá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 commithoặ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 gitthuậ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):
gitcá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 --amendnế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 -atùy chọn.
devhình thức chi nhánhmastervà sau đó là mộtfeatchi nhánh ngay lập tứcdev,featchi nhánh có vẻ như đến từmasterchi nhánh vì không có cam kết phân biệt trêndevchi nhánh màfeatchi nhánh đến từ. Một cam kết trống khi bạn lần đầu tiên tạodevchi nhánh giúp thiết lậpdevchi 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