我最近切换到将存储库同步到GitHub上的https://(由于防火墙问题),并且每次都要求输入密码。
有没有一种方法可以缓存凭据,而不是每次git push
都进行身份验证?
#1楼
您还可以使用以下命令让Git永久存储您的凭据:
git config credential.helper store
注意:虽然这很方便,但是Git会将您的凭据以明文形式存储在项目目录(请参见下面的“主”目录)下的本地文件(.git-credentials)中。 如果您不喜欢这样做,请删除该文件并切换到使用缓存选项。
如果您希望Git每次需要连接到远程存储库时都继续要求您提供凭据,则可以运行以下命令:
git config --unset credential.helper
要将密码存储在%HOME%
目录(而不是项目目录)中的.git-credentials
中,请使用--global
标志
git config --global credential.helper store
#2楼
对我来说不是立即显而易见的,我需要先下载该助手! 我在Atlassian的Git储存库永久验证中找到了credential.helper下载。
引用:
如果要在OS X上将Git与凭据缓存一起使用,请按照以下步骤操作:
下载二进制git-credential-osxkeychain。
运行以下命令以确保二进制文件可执行:
chmod a+x git-credential-osxkeychain
将其放在目录/usr/local/bin
。
运行以下命令:
git config --global credential.helper osxkeychain
#3楼
在GNU / Linux设置上,〜/ .netrc也可以很好地工作:
$ cat ~/.netrc
machine github.com login lot105 password howsyafather
这可能取决于Git用于HTTPS传输的网络库。
#4楼
您可以使用凭据助手。
git config --global credential.helper 'cache --timeout=x'
其中x
是秒数。
#5楼
TLDR; 将加密的netrc文件与Git 1.8.3+一起使用 。
在Windows上,可以使用~/.netrc
(Unix)或%HOME%/_netrc
(请注意_
)为Git存储库HTTPS URL保存密码。
但是 :该文件将以纯文本格式存储您的密码。
解决方案 :使用GPG(GNU Privacy Guard)加密该文件,并使Git在每次需要密码时对其进行解密(用于push
/ pull
/ fetch
/ clone
操作)。
注意:使用Git 2.18(2018年第二季度),您现在可以自定义用于解密加密的.netrc
文件的GPG。
参见Luis Marsano的 commit 786ef50和f07ee (2018年5月12日) (``) 。
(由Junio C gitster
- gitster
在commit 017b7c5中合并 ,2018年5月30日)
git-credential-netrc
:接受gpg
选项不管gpg.program选项如何,
git-credential-netrc
都使用'gpg
'进行了硬编码解密。
这在像Debian这样的发行版上却存在问题,这些发行版将现代GnuPG称为“gpg2
”
Windows的分步说明
使用Windows:
(Git的gpg.exe
中有一个gpg.exe
,但是使用完整的GPG安装程序会包含一个gpg-agent.exe
,它将记住与GPG密钥关联的密码。)