タイトルが言うように、私はリポジトリ内のすべての前回のコミットにgpg署名する方法を探しています(コミットごとにパスコードを入力しないことが望ましい)。以前のすべてのコミットにgpg署名する方法はありますか?
ありがとうございます!
タイトルが言うように、私はリポジトリ内のすべての前回のコミットにgpg署名する方法を探しています(コミットごとにパスコードを入力しないことが望ましい)。以前のすべてのコミットにgpg署名する方法はありますか?
ありがとうございます!
できますが、そのために履歴全体を書き直す必要があります。
コミットに署名すると、そのコミットIDを変更するコミットが変更されます。コミットIDは以前のコミットIDに依存するため、その後のすべてのコミットを変更する必要があります。とにかく、あなたはそれらすべてに署名しています。
誰も作業していない個人用リポジトリの場合は問題ありません。それが他の共同作業者と一緒にいるリポジトリの場合は、大きなリベースを行うように扱います。
-S
オプションを使用してすべてのコミットをやり直すには、git filter-branch
を使用します。
git filter-branch --commit-filter 'git commit-tree -S "[email protected]";' -- --all
は、すべてのコミットのためにあなたのパスコードを入力する必要がないとして、あなたはgpg-agentを使用するようにgpg
を設定する必要があります。 ssh-agent
に精通している場合は、同様の考えです。パスワードを一度だけ与え、それをメモリに保存しておくという少しのプロセスです。どのように行うかは、オペレーティングシステムとセットアップによって異なります。 OS XではGPG Toolsが世話をします。
あなたの助けてくれてありがとう! – asuna
この質問に対する回答がいくつかあります。[古いスーパーユーザの投稿](http://superuser.com/questions/397149/can-you-gpg-sign-old-commits)です。 – PatrickSteele
'filter-branch'などを使って自動的にこれを行う方法はありますか?これらのソリューションでは、私がインタラクティブなリベースで物事を練り歩く必要があります。 – asuna
コミットは前のすべてのコミットによって異なります。したがって、あるコミットに署名すると、そのコミットにつながったすべての履歴に暗黙的に署名します。 –