我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。

有没有办法缓存凭据,而不是每次git推送时都进行身份验证?


当前回答

为了安全起见,最好使用凭据,但您可以使用缓存将其保存一段时间:

git config --global credential.helper cache
git config credential.helper 'cache --timeout=3600'

您的凭据将保存3600秒。

其他回答

使用凭据存储。

对于OS X和Linux上的Git 2.11+,请使用Git内置的凭据存储:

git config --global credential.helper libsecret

对于Windows上的msysgit 1.7.9+:

git config --global credential.helper wincred

对于OS X上的Git 1.7.9+,请使用:

git config --global credential.helper osxkeychain

在Ubuntu上使用GitCredentialManager(GCM)在本地缓存凭据,在Ubuntu 20.04和18.04上进行了测试,但应该可以在其他Linux发行版上运行。

设置git凭据管理器:

curl -LO https://raw.githubusercontent.com/GitCredentialManager/git-credential-manager/main/src/linux/Packaging.Linux/install-from-source.sh
sh ./install-from-source.sh
git-credential-manager-core configure
git config --global credential.credentialStore cache
git config --global credential.cacheoptions "--timeout 72000"
sudo rm -rf git-credential-manager/
sudo rm install-from-source.sh

转到回购并运行git fetch选择设备代码访问链接并输入输出中提供的代码

我并没有立即意识到我需要先下载助手!我在Atlassian的永久认证Git存储库中找到了credential.helper下载。

报价:

如果您想在OS X上使用带有凭据缓存的Git,请执行以下步骤:

下载二进制git凭证osxkeychain。

运行以下命令以确保二进制文件可执行:

chmod a+x git-credential-osxkeychain

将其放在/usr/local/bin目录中。

运行以下命令:

git config --global credential.helper osxkeychain

在GNU/Linux设置中,~/.netrc也非常有效:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

这可能取决于Git用于HTTPS传输的网络库。

您可以使用凭据助手。

git config --global credential.helper 'cache --timeout=x'

其中x是秒数。