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 commit" научился "-S" для GPG-подписать коммит; это можно показать с помощью опции --show-signature для git log.
Так что да, вы можете подписывать коммиты. Тем не менее, я лично призываю к осторожности с этой опцией; автоматическое подписание коммитов практически бессмысленно, см. ниже:
Просто дополнительный вопрос, возможно, коммиты не должны подписываться, только теги, которые я никогда не создаю, так как я отправляю отдельные коммиты.
Это правильно. Комитеты не подписаны; теги есть. Причину этого можно найти в этом сообщении Линуса Торвальдса , последний абзац которого гласит:
Подписывать каждый коммит совершенно глупо. Это просто означает, что вы автоматизируете это, и вы делаете подпись на сумму меньше. Это также не добавляет никакой реальной ценности, поскольку, как работает цепочка мерзких DAG в SHA1, вам когда-либо понадобится только одна
подпись, чтобы все коммиты, достижимые из этого, были эффективно охвачены этим. Так что подписание каждого коммита просто упускает смысл.
Я бы посоветовал просмотреть связанное сообщение, в котором разъясняется, почему автоматическое подписание коммитов не является хорошей идеей гораздо лучше, чем я мог бы.
Однако , если вы хотите автоматически подписать тег , вы сможете сделать это, git-tag -[s|u]
заключив его в псевдоним; если вы собираетесь это сделать, вы, вероятно, захотите установить свой идентификатор ключа ~/.gitconfig
или .git/config
файл проекта . Больше информации об этом процессе можно увидеть в книге сообщества git . Подписание тегов бесконечно более полезно, чем подписание каждого коммита, который вы делаете.