每当我试图推进我的回购时,我都会要求两个username & password。
每次重新输入密码我都没有问题,但问题是输入用户名。我使用https来克隆我的存储库。
所以,我如何配置Git,使它不会在每个git push上要求username。
我对Linux不熟悉,但在Windowsgit push中IIRC只要求输入密码。
- 相关问题:stackoverflow.com/questions/2233590/…
- @吴:但我不想储存密码。我只想存储用户名。
- 尝试遵循这些指示并省略密码行。
- 使用https://github时是否可以跳过密码键入?
- 您的初始问题superuser.com/questions/847181/…也有一个关于superuser的答案。
- 如果你只想保存你的用户名,这是非常简单的,只需这样做:help.github.com/articles/setting-your-username-in-git
- 这里同样的问题,链接了对我有用的答案:stackoverflow.com/a/35942890/1579667
- 可能重复的git push需要用户名和密码
编辑(由@dk14根据版主和评论建议)
警告:如果您在答案中使用credential.helper store,您的密码将完全不加密("原样")存储在~/.git-credentials。请参考下面的评论部分或"链接"部分的答案,特别是如果您的雇主对安全问题没有任何容忍度。
即使接受了,它也不能回答实际操作中关于只省略用户名(而不是密码)的问题。对于那些有这个确切问题的读者来说,@grawity的答案可能很有用。
原始答案(作者:@Alexander Zhu):
可以使用以下命令存储凭据
1 2 3 4
| $ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password> |
号
我也建议你读江户十一〔四〕号
- 帮了我,谢谢!以这种方式存储密码的安全性如何?
- 警告,此方法不安全。您的密码以明文形式存储。
- 您可以在这里找到更好的实现安全性的方法-stackoverflow.com/a/28104587/1809978
- 在同一个存储库中工作的其他人会看到我的用户名吗?
- @marklakata-请告诉我如何撤销这个答案中的命令?撤消后,我将使用安全方法存储凭据。
- 这行,谢谢。它会在不再次询问密码的情况下记住凭据多长时间?我能改变时间吗?
- @测试人员joe2试用git config --unset credential.helper。
- 别忘了设置超时,默认为15分钟-设置值为3000万,大约有1年。可在此处找到:stackoverflow.com/a/35942890/1579667
- 我遇到了这个问题,但在尝试将凭据保存到安全存储时出错。要修复它,我必须停止Eclipse并删除安全存储文件所在的~/.eclipse/org.eclipse.equinox.security目录,然后按照说明在~/.eclipse中设置密码文件(仅带密码的文本文件),并在eclipse.in i的开头添加这些行:-eclipse.password/users/xxxx/.eclipse/eclipse.txt thi。启用了存储Git密码,当我推到Git时不再需要重新输入我的用户ID和密码。
- 这对我有很大帮助。
- 如果存储纯文本密码是一个问题,并且假设它是针对GitHub的,那么您可以使用令牌而不是密码进行身份验证,那么至少只有令牌将存储在纯文本中,并且可以随时撤销它:help.github.com/articles/&hellip;
您可以在本地存储库的.git/config文件中完成此操作。此文件包含一个名为"remote"的节,其中包含一个名为"url"的条目。"url"条目应该包含您所说的知识库的https链接。
当您在主机"url"前面加上您的用户名时,git不应该再要求您的用户名了。下面是一个例子:
- 如果在用户名或pw中使用特殊字符,则应将其转义。请参阅en.wikipedia.org/wiki/percent-escape以了解正确的转义字符。例如"!@#[无报价]将替换为"%21%40%23"。另请参见下面的"Daniel Lerch"回答
- 在同一个存储库中工作的其他人会看到我的用户名吗?
- 这应该是OP问题的正确答案,即"如何保持用户名,而不是密码"。这个答案不仅是保持用户名的正确方法,还避免了git config credential.helper store可能存在的安全风险。
- 我很感谢这个答案,并尝试了这种方式,但它仍然问我每次(v 2.1.4)-尝试远程URL与[email protected]和name%[email protected]它总是要求username for https://gitlab.com:。
- 我试过了,有以下错误:ssh: Could not resolve hostname https: No address associated with hostnamefatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.你确定你的例子是正确的吗?
- 我试了一下,找到了unable to access 'https://@bitbucket.org:/.git/': Illegal port number。
- 或用户名:password@repository…转发:)
使用Git存储库进行永久身份验证
运行以下命令以启用凭据缓存:
1 2 3 4 5
| $ git config credential.helper store
$ git push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https:// [email protected]': <PASSWORD> |
使用还应指定缓存过期
1
| git config --global credential.helper"cache --timeout 7200" |
。
启用凭据缓存后,将缓存7200秒(2小时)。
读取凭据文档
。
- 缓存过期解决了我试图实现的目标。
- 我将超时设置为7200。但后来我想把它设为5进行测试。所以我把它设置为5,但是当我试图在30秒后再次推时,却没有要求我输入用户名或密码。
- 可能是您的凭证,而不是全局存储。
- 关于安全性,值得参考文档:"这个命令将凭证缓存在内存中,以供将来的git程序使用。存储的凭证永远不会接触磁盘,在可配置的超时后会被忘记。"git-scm.com/docs/git-credential-cache
- git config credntial.helper store不是负责在~/.git凭证文件中存储纯文本凭证的危险命令吗?根据我的经验,…cache…-命令就足够了:git config --clogal credential.helper 'cache --timeout 7200'它用其中的缓存文件创建dir:~/.git-credential-cache,所以,只需执行这个命令,而不是"…store"命令。
- 不适合我。每次都要密码
我找到的最简单的方法是使用这个命令:
1
| git config --global credential.https://github.com.username <your_username> |
这是一个网站一个网站的基础上工作,并修改您的全球Git配置。
要查看更改,请使用:
1
| git config --global --edit |
。
- 出于某种原因,这是唯一适用于我的方法。谢谢!
- 这个方法安全吗?GitHub密码是否只存储在本地计算机上,而不是推送到GitHub?
- 唯一对我有用的命令,谢谢!!
- 我不知道为什么这不是批准的答案,这个命令工作得很好,完全响应了这个问题:存储用户名,而不是密码。谢谢本!
- @不客气!
如本文在GitHub上所述,添加新的ssh密钥。
如果Git仍要求您输入用户名和密码,请尝试在远程URL中将https://github.com/更改为[email protected]::
1 2 3 4
| $ git config remote.origin.url
https://github.com/dir/repo.git
$ git config remote.origin.url" [email protected]:dir/repo.git" |
- 这应该是正确的答案!保存凭证是非常不安全的。如果我有一个ssh密钥,它只会询问我的凭证,因为我没有这里概述的正确的URL。
- 或者你可以使用git config remote.origin.url"ssh://git@yourRepoHost/yourRepoName.git"。
- git config remote.origin.url [email protected]:adammajewski/ray-backward-iteration.git
如果您使用的是https而不是ssh,则可以按照用户701648的说明在.git/config中编辑"url",但如果您需要,还可以添加密码:
您可以通过在Git配置文件中放置如下内容,为给定站点的所有存储库设置用户名。您需要将"https://example.com"和"me"更改为实际的URL和实际的用户名。
1 2
| [credential"https://example.com"]
username = me |
。
(这直接来自"Git帮助凭据")。
确保您使用的是ssh而不是http。检查这个答案。
- 但是我不得不使用http,因为在我的大学里,ssh被系统管理部门封锁了。
- 那么这个链接也许会帮助你。
- 现在有一个官方的Github帮助页面。对我来说,发生的事情是我在登录之前克隆了自己的一个repo,所以它不认识我,默认为https,我相信。帮助.github.com/articles/changing-a-remote-s-url
更改克隆的repo工作:
号
使用缓存的凭据是可行的,设置超时时间可以减少麻烦。如果使用Windows凭据帮助器,那么这应该是最简单的方法(尤其是在ssh被阻止的情况下)。
- 这是Github的正确答案(具体问题是问…(不确定你为什么被否决)。
- 这样做的要点是使用ssh
除了用户701648的回答之外,您还可以使用以下命令将凭证存储在主文件夹(所有项目的全局文件夹)中,而不是项目文件夹中
1 2 3 4
| $ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password> |
。
最简单的方法是创建一个包含以下内容的~/.netrc文件:
1 2 3
| machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD |
号
(如图所示:https://gist.github.com/ahoward/2885020)
您甚至可以关闭此文件的权限,以便没有人可以通过键入以下内容来读取您的密码:
号
当我只有git pull,git pull origin xxx时,git会同时请求用户名和密码。
1
| git config credential.helper store |
号
它起作用了。
如果您使用ssh版本,密码就不会有任何问题。只有一次您生成ssh密钥,告诉git,这台电脑将使用这个github帐户,并且不再询问我任何访问权限(对于这台电脑)。
如何为github生成ssh
git config—全局credential.helper缓存
为了避免输入用户名,但仍然提示输入密码,您可以简单地克隆存储库,包括用户名:
号
$git config credential.helper存储
$git推送/推送https://github.com/xxx.git
然后输入用户名和密码。
多恩
- 不是git push/push https://github.com/xxx.git,应该是git push https://github.com/xxx.git。
快速法
在Working dir中获取Git的URL:
1
| git config remote.origin.url |
然后:
1 2 3
| git config credential.helper store
git push"url of your git" |
号
最后一次询问用户名和密码
完成。
你可以跑了
1
| git config --global credential.helper wincred |
号
在系统中安装并登录Git for Windows之后。
- OP正在使用Linux,您的答案不起作用。
- 在查询中没有看到linux这个词。我的错