2017-01-26 11 views
1

タイトルが言うように、私はリポジトリ内のすべての前回のコミットにgpg署名する方法を探しています(コミットごとにパスコードを入力しないことが望ましい)。以前のすべてのコミットにgpg署名する方法はありますか?

ありがとうございます!

+0

この質問に対する回答がいくつかあります。[古いスーパーユーザの投稿](http://superuser.com/questions/397149/can-you-gpg-sign-old-commits)です。 – PatrickSteele

+0

'filter-branch'などを使って自動的にこれを行う方法はありますか?これらのソリューションでは、私がインタラクティブなリベースで物事を練り歩く必要があります。 – asuna

+3

コミットは前のすべてのコミットによって異なります。したがって、あるコミットに署名すると、そのコミットにつながったすべての履歴に暗黙的に署名します。 –

答えて

3

できますが、そのために履歴全体を書き直す必要があります。

コミットに署名すると、そのコミット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が世話をします。

+1

あなたの助けてくれてありがとう! – asuna

関連する問題