編集:Gitバージョン1.7.9以降、Gitコミットに署名することができgit commit -S
ます()。これを反映するために回答を少し更新します。
質問のタイトルは次のとおりです。
GPGキーでGitにコミットを「自動署名」する方法はありますか?
短い答え:はい、しかしそれをしないでください。
質問のタイプミスに対処する:git commit -s
コミットに署名しません。むしろ、man git-commit
ページから:
-s、--signoff
コミットログメッセージの最後にコミッターがSigned-off-by行を追加します。
これにより、次のようなログが出力されます。
± $ 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 commit」は「-S」を学習してGPG署名にコミットしました。これは、「git log」の「--show-signature」オプションで表示できます。
ですから、コミットに署名できます。ただし、私は個人的にこのオプションには注意を促しています。コミットの自動署名は無意味なものの隣にあります。以下を参照してください:
余談ですが、コミットには署名しないでください。単一のコミットを送信するときに、タグだけを作成する必要があります。
そのとおりです。コミットは署名されていません。タグがあります。この理由は、Linus Torvaldsによるこのメッセージで確認できます。
各コミットへの署名は完全に愚かです。それはあなたがそれを自動化し、署名の価値を少なくすることを意味するだけです。また、SHA1のgit DAGチェーンが機能
するため、1つのシグネチャだけで、そのコミットから到達可能なすべてのコミットを効果的にカバーできます。したがって、各コミットに署名することは、要点を見逃しているだけです。
リンクされたメッセージを閲覧することをお勧めします。これにより、コミットに自動的に署名することが、私よりもはるかに良い方法ではない理由が明らかになります。
ただし、タグに自動的に署名したい場合git-tag -[s|u]
は、をエイリアスでラップすることで可能になります。これを行う場合は、キーID ~/.gitconfig
またはプロジェクト固有の.git/config
ファイルをセットアップする必要があります。そのプロセスの詳細については、gitコミュニティブックを参照してください。タグへの署名は、コミットごとに署名するよりもはるかに便利です。