为什么git pull在设置密码之前仍要求输入密码?

时间:2019-09-05 17:57:14

标签: git docker

所以,这就是我们要做的事情:

$ git config --global credential.helper store
$ git config --global user.name myname
$ git config --global user.password mypassword
$ tmpdir=`mktemp -d`
$ cd $tmpdir
$ git init
$ git remote add origin <https github URL ending in .git>
$ git pull

运行$ git pull时,系统会再次提示我输入用户名和密码。我的理解是,一旦我在全局范围内设置了用户名和密码,git岂不应该自动选择吗?我需要将这些步骤作为自动化功能的一部分运行,并且在https git url中(或通过tha提示符)显式提供用户名和密码无济于事。

如何设置它,而不必一直手动提供凭据?

2 个答案:

答案 0 :(得分:2)

我认为这是因为您使用的是https远程URL。

根据GitHub上的this解释:

  

使用HTTPS远程URL具有一些优点:它比SSH容易设置,并且通常通过严格的防火墙和代理来工作。但是,它还会提示您每次拉出或推送存储库时都输入GitHub凭据。

您可以使用credential helper告诉Git每次与GitHub对话时都记住您的GitHub用户名和密码。

  

打开凭据助手,以便Git将您的密码保存在内存中一段时间​​。默认情况下,Git会将您的密码缓存15分钟。

设置git以使用凭据内存缓存

$ git config --global credential.helper cache

将缓存设置为1小时后超时(以秒为单位)

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

答案 1 :(得分:0)

我不认为user.password是有效的配置。
并且user.name仅用于提交作者,不是用于身份验证。

如果您想提前缓存凭据,可以使用git ls-remote(对于私有存储库)

git ls-remote https://url/private/epository.git
# prompt for username/password
# enter username and password

然后,任何init / remote add / pull命令将提示输入用户名/密码,重新使用为该URL域缓存的用户名/密码。