แก้ไข: ในฐานะของ Git เวอร์ชัน 1.7.9, มันเป็นไปได้ที่จะลงนามกระทำ Git ( git commit -S
) อัปเดตคำตอบเล็กน้อยเพื่อสะท้อนถึงสิ่งนี้
ชื่อคำถามคือ:
มีวิธีการ "เซ็นสัญญาอัตโนมัติ" ใน Git ด้วยรหัส GPG หรือไม่?
คำตอบสั้น ๆ : ใช่ แต่ไม่ทำ
การระบุคำที่พิมพ์ผิดในคำถาม: git commit -s
ไม่ได้ลงนามในการส่ง ค่อนข้างจากman git-commit
หน้า:
-s,
- ลงชื่อออกจากเพิ่มบรรทัดที่ลงชื่อแล้วโดยคอมมิชชันในตอนท้ายของข้อความบันทึกการคอมมิต
สิ่งนี้ให้เอาต์พุตของบันทึกคล้ายกับตัวอย่างต่อไปนี้:
± $ 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
หมายเหตุบิต "Signed-off-by: ... "; ที่ถูกสร้างขึ้นโดยธงบน-s
git-commit
การอ้างถึงอีเมลประกาศข่าวประชาสัมพันธ์ :
- "git กระทำ" เรียนรู้ "-S" เพื่อ GPG-sign the commit; สิ่งนี้สามารถแสดงได้ด้วยตัวเลือก "--show-signature" ถึง "git log"
ใช่คุณสามารถเซ็นสัญญาได้ อย่างไรก็ตามฉันขอเตือนด้วยตัวเลือกนี้เป็นการส่วนตัว การลงนามโดยอัตโนมัตินั้นอยู่ถัดจากจุดว่างเปล่าดูด้านล่าง:
แค่คำถามข้างหนึ่งอาจไม่ควรเซ็นสัญญา แต่มีเพียงแท็กที่ฉันไม่เคยสร้างขณะส่งคอมมิทเดียว
ถูกต้อง. ความมุ่งมั่นไม่ได้ลงนาม; แท็กคือ เหตุผลสำหรับสิ่งนี้สามารถพบได้ในข้อความนี้โดยLinus Torvaldsย่อหน้าสุดท้ายที่กล่าวว่า:
การลงนามแต่ละการกระทำนั้นโง่โดยสิ้นเชิง มันหมายความว่าคุณทำให้เป็นอัตโนมัติและคุณทำให้ลายเซ็นมีค่าน้อยลง นอกจากนี้ยังไม่ได้เพิ่มคุณค่าที่แท้จริงใด ๆ ตั้งแต่วิธีการทำงานของห่วงโซ่ DAG คอมไพล์ของ SHA1 คุณเพียงแค่ต้องการ
ลายเซ็นเดียวเพื่อให้การกระทำทั้งหมดเข้าถึงได้จากสิ่งนั้น ดังนั้นการลงนามในแต่ละการกระทำจึงไม่มีจุด
ฉันขอแนะนำให้เรียกดูข้อความที่เชื่อมโยงซึ่งชี้แจงว่าทำไมการลงนามโดยอัตโนมัติไม่ใช่ความคิดที่ดีในทางที่ดีกว่าที่ฉันจะทำได้
อย่างไรก็ตามหากคุณต้องการเซ็นชื่อแท็กโดยอัตโนมัติคุณจะสามารถทำได้โดยการgit-tag -[s|u]
ใส่ชื่อแทน หากคุณกำลังจะทำเช่นนั้นคุณอาจต้องการตั้งค่ารหัสคีย์ของคุณ~/.gitconfig
หรือ.git/config
ไฟล์เฉพาะโครงการ ข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการที่สามารถมองเห็นได้ในหนังสือคอมไพล์ชุมชน แท็กการเซ็นชื่อมีประโยชน์มากกว่าการลงชื่อแต่ละครั้งที่คุณส่งมอบ