我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
当前回答
如果您正在使用osxkeychain,并且有一个令牌过期,并希望更新它,请执行以下步骤:
在终端中运行,然后按enter键两次。
git credential-osxkeychain erase
host=github.com
protocol=https
现在应该会提示您输入用户名/密码。然而,有时这似乎并不“需要”,你必须继续重新进入。
如果是,请重新启动计算机。现在,下次运行git命令并输入用户名/密码时,它将被保存。
其他回答
OAuth(身份验证)
您可以创建自己的个人API令牌(OAuth),并以与使用普通凭据相同的方式使用它(位于:/settings/tokens)。例如:
git remote add fork https://4UTHT0KEN@github.com/foo/bar
git push fork
.netrc文件
另一种方法是在~/.netrc(在Windows上为_netrc)中配置用户/密码,例如。
machine github.com
login USERNAME
password PASSWORD
对于HTTPS,添加额外的行:
protocol https
凭据助手
要在使用HTTPS时在Git中缓存GitHub密码,您可以使用凭据助手告诉Git每次与GitHub对话时记住您的GitHub用户名和密码。
Mac:git config--全局凭证.helper osxkeychain(需要osxkeychain助手),Windows:git-config--全局凭据。helper wincredLinux和其他:git-config--全局凭证.helper缓存
相关:
如何在终端密钥链中存储Linux上的GitHub https密码?如何确保Git不会向我索要GitHub用户名和密码?配置Git客户端,如GitHub for Windows,以不要求身份验证将本地回购推送到具有双重身份验证的GitHub回购
如果您正在使用osxkeychain,并且有一个令牌过期,并希望更新它,请执行以下步骤:
在终端中运行,然后按enter键两次。
git credential-osxkeychain erase
host=github.com
protocol=https
现在应该会提示您输入用户名/密码。然而,有时这似乎并不“需要”,你必须继续重新进入。
如果是,请重新启动计算机。现在,下次运行git命令并输入用户名/密码时,它将被保存。
我在MacOS上也遇到了这个问题,以下命令对我有效:
rm -rf ~/.git-credentials
这是一种强制方法,可以真正删除所有git凭据。下次我使用push命令时,瞧:系统会提示我输入用户名和密码(或令牌)。
我从gitcredentials(7)手册页面得到了答案。就我而言,我的Windows安装中没有凭据缓存;我使用凭据存储。
使用凭据存储后,用户名/密码存储在[用户文件夹]/.git凭据文件中。要删除用户名/密码,只需删除文件的内容。
自Git 1.7.9(2012年发布)以来,Git中有一种巧妙的机制,可以避免一直为HTTP/HTTPS输入密码,称为凭据助手。
您可以只使用以下凭据助手之一:
git config --global credential.helper cache
credential.helper缓存值告诉Git将密码缓存在内存中一段特定的时间。默认值为15分钟,您可以通过以下方式设置更长的超时:
# Cache for 1 hour
git config --global credential.helper "cache --timeout=3600"
# Cache for 1 day
git config --global credential.helper "cache --timeout=86400"
# Cache for 1 week
git config --global credential.helper "cache --timeout=604800"
如果需要,您还可以永久存储凭据,请参阅下面的其他答案。
GitHub的帮助还建议,如果您使用Mac OS X并使用Homebrew安装Git,您可以使用本机Mac OS X密钥库:
git config --global credential.helper osxkeychain
对于Windows,有一个名为GitCredentialManagerforWindows或wincred的助手。
git config --global credential.helper wincred # obsolete
使用Git for Windows 2.7.3+(2016年3月):
git config --global credential.helper manager
对于Linux,您将使用(在2011年)gnomekeyring(或其他keyring实现,如KWallet)。
如今(2020年),这将是(在Linux上)
Fedora公司
sudo dnf install git-credential-libsecret
git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret
Ubuntu(Ubuntu)
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret