我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
当前回答
使用凭据存储。
对于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
其他回答
有一种简单、老式的方法可以将用户凭据存储在HTTPS URL中:
https://user:password@github.com/...
您可以使用git remote set URL<remote repo><URL>更改URL
这种方法的明显缺点是必须以纯文本存储密码。您仍然可以只输入用户名(https://user@github.com/…),这至少可以为您省去一半的麻烦。
您可能更喜欢切换到SSH或使用GitHub客户端软件。
通常你有一个远程URL,像这样,
git remote -v
origin https://gitlab.com/username/Repo.git (fetch)
origin https://gitlab.com/username/Repo.git (push)
如果您想在使用git push时跳过用户名和密码,请尝试以下操作:
git remote set-url origin https://username:password@gitlab.com/username/Repo.git
我刚刚向origin添加了相同的URL(包括密码在内的用户详细信息)。
注意:如果用户名是电子邮件Id,则不起作用。
git remote -v
origin https://username:password@gitlab.com/username/Repo.git (fetch)
origin https://username:password@gitlab.com/username/Repo.git (push)
如果您正在使用osxkeychain,并且有一个令牌过期,并希望更新它,请执行以下步骤:
在终端中运行,然后按enter键两次。
git credential-osxkeychain erase
host=github.com
protocol=https
现在应该会提示您输入用户名/密码。然而,有时这似乎并不“需要”,你必须继续重新进入。
如果是,请重新启动计算机。现在,下次运行git命令并输入用户名/密码时,它将被保存。
我在MacOS上也遇到了这个问题,以下命令对我有效:
rm -rf ~/.git-credentials
这是一种强制方法,可以真正删除所有git凭据。下次我使用push命令时,瞧:系统会提示我输入用户名和密码(或令牌)。
您可以使用凭据助手。
git config --global credential.helper 'cache --timeout=x'
其中x是秒数。