Chỉnh sửa: Tính đến Git phiên bản 1.7.9, nó là có thể ký cam kết Git ( git commit -S
). Cập nhật câu trả lời một chút để phản ánh điều này.
Tiêu đề câu hỏi là:
Có cách nào để Cam kết tự động cam kết trong Git bằng khóa GPG không?
Câu trả lời ngắn: có, nhưng đừng làm điều đó.
Giải quyết lỗi đánh máy trong câu hỏi: git commit -s
không ký cam kết. Thay vào đó, từ man git-commit
trang:
-s, --signoff
Thêm dòng đã ký bởi người ủy quyền ở cuối thông báo nhật ký cam kết.
Điều này cung cấp một đầu ra nhật ký tương tự như sau:
± $ git log [0:43:31]
commit 155deeaef1896c63519320c7cbaf4691355143f5
Author: User Name
Date: Mon Apr 16 00:43:27 2012 +0200
Added .gitignore
Signed-off-by: User Name
Lưu ý bit "Đã ký tắt: ..."; được tạo bởi -s
cờ trên git-commit
.
Trích dẫn email thông báo phát hành :
- "Git commit" đã học "-S" cho GPG - ký cam kết; điều này có thể được hiển thị với tùy chọn "--show-chữ ký" thành "git log".
Vì vậy, có, bạn có thể ký cam kết. Tuy nhiên, cá nhân tôi kêu gọi thận trọng với tùy chọn này; tự động ký cam kết là vô nghĩa, xem bên dưới:
Chỉ là một câu hỏi phụ, có thể các cam kết không nên được ký, chỉ các thẻ mà tôi không bao giờ tạo, khi tôi gửi các cam kết duy nhất.
Đúng rồi. Cam kết không được ký kết; thẻ là. Lý do cho điều này có thể được tìm thấy trong tin nhắn này bởi Linus Torvalds , đoạn cuối cùng trong đó nói:
Ký mỗi cam kết là hoàn toàn ngu ngốc. Nó chỉ có nghĩa là bạn tự động hóa nó, và bạn làm cho chữ ký có giá trị ít hơn. Nó cũng không thêm bất kỳ giá trị thực nào, vì cách thức hoạt động của chuỗi DAG của SHA1, bạn chỉ cần một
chữ ký để làm cho tất cả các cam kết có thể đạt được từ đó. Vì vậy, ký mỗi cam kết chỉ đơn giản là thiếu điểm.
Tôi khuyến khích duyệt qua tin nhắn được liên kết, điều này làm rõ lý do tại sao việc ký cam kết tự động không phải là một ý tưởng tốt theo cách tốt hơn nhiều so với tôi có thể.
Tuy nhiên , nếu bạn muốn tự động ký một thẻ , bạn sẽ có thể làm điều đó bằng cách gói git-tag -[s|u]
bí danh; nếu bạn định làm điều đó, có lẽ bạn muốn thiết lập id khóa của mình trong tệp ~/.gitconfig
cụ thể của dự án .git/config
. Thông tin thêm về quá trình đó có thể được nhìn thấy trong cuốn sách cộng đồng git . Ký thẻ là vô cùng hữu ích hơn so với ký mỗi cam kết bạn thực hiện.