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

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


当前回答

通常你有一个远程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)

其他回答

只需将登录凭据作为URL的一部分:

git remote rm origin
git remote add origin https://username:mypassword@github.com/path/to/repo.git

注意:我不建议使用这种方法,但如果你很匆忙,而其他方法都不奏效,你可以使用这种方法。

如果你不想像Mark所说的那样以明文形式存储密码,你可以使用不同的GitHub URL进行抓取,而不是推送。在配置文件中的[远程“原点”]下:

url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git

当您推送时,它仍然会要求输入密码,但当您获取时,它不会要求输入密码。

我在MacOS上也遇到了这个问题,以下命令对我有效:

rm -rf  ~/.git-credentials 

这是一种强制方法,可以真正删除所有git凭据。下次我使用push命令时,瞧:系统会提示我输入用户名和密码(或令牌)。

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

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

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

你可以使用

git config credential.helper store

当您下次使用pull或push输入密码时,它将以明文形式存储在文件.git凭据中(有点不安全,但只需将其放入受保护的文件夹中)。

如本页所述:

git凭证存储