Edit: На Git версії 1.7.9, то це можна підписати Git яка вчиняє ( git commit -S
). Трохи оновивши відповідь, щоб це відобразити.
Назва питання:
Чи є спосіб "автоматичного дизайну" здійснювати в Git ключем GPG?
Коротка відповідь: так, але не робіть цього.
Звернення до друкарської помилки у запитанні: git commit -s
не підписує зобов’язання. Швидше зі man git-commit
сторінки:
-s, --signoff
Додати підписаний рядок комітером у кінці повідомлення журналу фіксації.
Це дає вихід журналу, подібний до наступного:
± $ 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
Зверніть увагу на біт "Підписано: ..."; що було породжене -s
прапором на git-commit
.
Цитуючи повідомлення про випуск електронної пошти :
- "git počin" дізнався "-S" до GPG - підписує комітет; це може бути показано за допомогою параметра "--show-signature" для "git log".
Так що так, ви можете підписати коміти. Однак я особисто закликаю бути обережними з цим варіантом; автоматичне підписання зобов’язань поруч безглуздо, див. нижче:
Лише побічне запитання, можливо, коміти не повинні підписуватися, а лише теги, які я ніколи не створюю, коли я надсилаю окремі коміти.
Це правильно. Комітети не підписані; теги є. Причину цього можна знайти в цьому повідомленні Лінуса Торвальда , останній абзац якого говорить:
Підписання кожного зобов’язання абсолютно нерозумно. Це просто означає, що ви автоматизуєте це, і ви робите підпис менше. Це також не додає жодної реальної цінності, оскільки для того, як робота GIT-ланцюга DAG роботи SHA1, вам завжди потрібен лише один
підпис для того, щоб усі комісії, доступні для цього, були ефективно покриті цим. Тому підписання кожного зобов’язання просто не вистачає сенсу.
Я б закликав переглядати пов’язане повідомлення, яке пояснює, чому підписання фільмів автоматично не є гарною ідеєю набагато кращим способом, ніж я міг.
Однак якщо ви хочете автоматично підписати тег , ви зможете це зробити, загорнувши git-tag -[s|u]
в псевдонім; якщо ви збираєтесь це зробити, ви, ймовірно, хочете встановити свій ідентифікатор ключа ~/.gitconfig
або .git/config
файл, що відповідає проекту . Більше інформації про цей процес можна знайти в книзі спільноти git . Підписання тегів нескінченно корисніше, ніж підписання кожного зобов’язання, яке ви приймаєте.