2016-07-14 73 views
7

Git總是要求我在簽署提交時輸入密碼來解鎖我的密鑰。防止git在簽署提交期間詢問GnuPG密碼

git commit -S -m 'message' 

我如何在高速緩存中存儲的密碼,這樣我沒有同時簽署承諾

+2

您可以設置'gpg-agent'並配置'default-cache-ttl'選項以及'max-cache-ttl'來緩存您的密碼。 – miqid

+0

我正在尋找一種方法來使用git。像git密碼緩存。 – pokemon

回答

8

混帳從來沒有得到的GnuPG密碼的持有進入它每一次。您必須依靠GnuPG緩存密碼的功能,這通過0​​發生,通過編輯~/.gnupg/gpg-agent.conf(隱藏在Windows的AppData文件夾中的某處)可輕鬆設置密碼。

default-cache-ttl設置爲在每次調用GnuPG後緩存密碼的秒數。 maximum-cache-ttl設置最初輸入緩存被擦除的密碼後的時間。確保ignore-cache-for-signing未設置 - 否則GnuPG將忽略用於簽名操作的緩存。

如果您希望在沒有任何用戶交互的情況下對提交進行簽名,則可以通過gpg-preset-passphrase預填充緩存,通常隱藏在某個位置的某個位置,如/usr/lib/gnupg2/gpg-preset-passphrase;或者通過運行任意的解密或簽名操作。您也可以配置git使用這樣的選項來傳遞給gpg,但請仔細閱讀此方法的限制和安全含義(它涉及到您的密碼以明文形式存儲在某處)。

+0

我沒有'〜/ .gnupg/gpg-agent.conf',而是我有'〜/ .gnupg/gpg.conf',可以在那裏設置'default-cache-ttl'。 – pokemon

+0

不,這些選項顯式地用於'gpg-agent.conf'。你是否安裝了'gpg-agent'('哪個gpg-agent'應該列出一個條目)?否則,只需創建一個新文件並設置這些選項。 –

+0

是的,我安裝了gpg-agent,但它不起作用,既不在gpg-agent.conf文件中,也不在gpg.conf中。順便說一下,我使用的是Ubuntu gnome 16.04,你確定這種方法可以工作嗎? – pokemon

-4

如果你真的不想要或需要登錄每一個承諾,你可以在默認情況下運行關掉簽字:

git config --global commit.gpgsign false 

然後,如果您想籤一個承諾,你可以這樣做使用-S旗。像這樣..

git commit -S -m your commit message 

只是讓我的生活更簡單!

+0

你認爲這可以回答OP要求的內容嗎? –

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/17806364) –