每当我尝试推入我的repo git时都要求username & password
。
每次重新输入密码都没有问题,但问题是输入用户名。我使用https
来克隆我的存储库。
那么,我如何配置git,以便它不会在每个username
上请求git push
。
我是linux的新手,但是Windows git push
中的IIRC只要求输入密码。
答案 0 :(得分:820)
编辑(由主持人和评论建议的@ dk14)
警告:如果您使用答案中的credential.helper store
,您的密码将在~/.git-credentials
完全未加密(“按原样”)存储。请参阅下面的评论部分或“链接”部分的答案,特别是如果您的雇主对安全问题的容忍度为零。
即使被接受,它也没有回答实际OP关于省略用户名(不是密码)的问题。对于那些确切问题的读者来说,@ grawity的answer可能会派上用场。
原始答案(来自@Alexander Zhu):
您可以使用以下命令存储凭据
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
我还建议你阅读
$ git help credentials
答案 1 :(得分:145)
您可以在本地存储库的.git/config
文件中完成此操作。此文件包含一个名为“remote”的部分,其中包含一个名为“url”的条目。 'url'条目应包含您正在讨论的存储库的https链接。
如果您在主机'url'前加上您的用户名,git
就不应该再询问您的用户名了。这是一个例子:
url = https://username@repository-url.com
答案 2 :(得分:91)
运行以下命令以启用凭据缓存:
$ git config credential.helper store
$ git push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>
使用时还应指定缓存过期
git config --global credential.helper "cache --timeout 7200"
启用凭据缓存后,它将缓存 7200秒(2小时)。
阅读凭据文档
$ git help credentials
答案 3 :(得分:33)
我找到的最简单方法是使用此命令:
git config --global credential.https://github.com.username <your_username>
这适用于逐个站点并修改您的全局git配置。
要查看更改,请使用:
git config --global --edit
答案 4 :(得分:31)
如果Git仍然要求您输入用户名和&amp;密码,请尝试将远程网址中的https://github.com/
更改为git@github.com:
:
$ git config remote.origin.url
https://github.com/dir/repo.git
$ git config remote.origin.url "git@github.com:dir/repo.git"
答案 5 :(得分:27)
如果您使用的是https而不是ssh,则可以在.git/config
中编辑“url”,如user701648所示,但如果您需要,还可以添加密码:
url = https://username:password@repository-url.com
答案 6 :(得分:18)
您可以通过在Git配置文件中添加以下内容,为给定站点的所有存储库设置用户名。您需要将“https://example.com”和“我”更改为实际网址和实际用户名。
[credential "https://example.com"]
username = me
(这直接来自“git help credentials”)
答案 7 :(得分:11)
确保使用SSH而不是http。检查this SO回答。
答案 8 :(得分:8)
更改克隆的回购邮件:
git remote set-url origin git@github.com:gitusername/projectname.git
使用缓存凭据可以正常工作,并且设置超时时间会减少烦恼。如果您使用Windows凭据帮助程序,那应该是最简单的方法(特别是在SSH被阻止的情况下)。
答案 9 :(得分:7)
除了user701648的答案,您还可以使用以下命令将凭据存储在主文件夹中(所有项目的全局),而不是项目文件夹
$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
答案 10 :(得分:6)
当我只是git pull,git pull origin xxx,git要求用户名和&amp;密码。
git config credential.helper store
它有效。
答案 11 :(得分:5)
最简单的方法是创建一个包含以下内容的~/.netrc
文件:
machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD
(如此处显示:https://gist.github.com/ahoward/2885020)
您甚至可以关闭此文件的权限,以使没人能通过键入以下内容来读取您的密码:
chmod 600 ~/.netrc
答案 12 :(得分:5)
如果您使用 SSH 版本,密码就不会有任何问题。只有一次生成 SSH 键,告诉git, this < / strong> pc将与此 github帐户一起使用,从不再向我询问任何访问权限(针对此电脑)。
答案 13 :(得分:3)
git config --global credential.helper缓存
答案 14 :(得分:3)
.git-credentials
中删除 C:\Users\{username}
文件。答案 15 :(得分:2)
$ git config credential.helper store
$ git push / push https://github.com/xxx.git
然后输入您的用户名和密码。
答案 16 :(得分:2)
为避免输入用户名,但仍然提示输入密码,您只需克隆您的存储库,包括用户名:
git clone user_name@example.gitrepo.com/my_repo.git
答案 17 :(得分:2)
对于 Windows 和 Linux ,请参阅下面提到的Github文档链接。
来自Github文档:Documentation Link
在Git中缓存GitHub密码
您需要Git 1.7.10或更高版本才能使用osxkeychain凭据 帮手。
检查您的Git版本:
git --version
查找已安装的 osxkeychain helper :
git credential-osxkeychain
如果您收到以下响应,则说明它已经安装并可以在Mac上使用:
> Usage: git credential-osxkeychain <get|store|erase>
如果没有收到如上所示的响应,则可以运行以下命令来安装它:
git credential-osxkeychain
告诉git在git凭证中全局使用osxkeychain:
git config --global credential.helper osxkeychain
它将提示一次,然后将凭据保存到钥匙串。
答案 18 :(得分:2)
要设置24小时全天的凭据。
git config --global credential.helper 'cache --timeout 86400'
否则1小时将86400秒替换为3600。
OR
“缓存”身份验证帮助程序的所有配置选项:
git help credential-cache
答案 19 :(得分:1)
对我来说,当我为我的帐户启用2-Factor身份验证(2FA)时,就会出现此问题。我将输入正确的凭据,并且身份验证仍然会失败,因为终端身份验证当然不会要求提供身份验证代码。
我只需要为我的帐户禁用2FA。完成此操作后,我只能在git push
中输入我的凭据一次。从那时起就不需要它们了。
答案 20 :(得分:1)
这种情况发生在使用HTTPS而不是SSH进行下载时,我实现的最简单的方法是在进行了几次更改(其中要求输入用户名和密码)后推送了所有内容,然后从计算机和git中删除了该目录克隆SSH地址。解决了。
只需使用SSH而不是HTTP克隆它,它就不会询问用户名或密码。
即使使用SSH下载,也具有双重身份验证会导致问题,因此禁用它可以解决问题。
答案 21 :(得分:1)
要解决此问题,请使用github recommends通过HTTPS连接。
Git的documentation讨论了如何使用gitcredentials精确地做到这一点。
解决方案1
给定身份验证上下文的用户名的静态配置。
https://username:<personal-access-tokens>@repository-url.com
您将在documentation中找到详细信息。
解决方案2
使用凭据助手来缓存密码(在内存中短时间)。
git config --global credential.helper cache
解决方案3
使用凭据助手来存储密码(无限期地在磁盘上)。
git config --global credential.helper 'store --file ~/.my-credentials'
您可以在documentation中找到凭证的保存位置(如果未使用--file明确设置)。
如果未使用--file明确设置,则有两个文件,其中 git-credential-store将按以下顺序搜索凭证 优先级:
〜/ .git-credentials
如果〜/ .git-credentials,则不会使用此文件中存储的User-specific credentials file. $XDG_CONFIG_HOME/git/credentials Second user-specific credentials file. If $XDG_CONFIG_HOME is not set or empty, $HOME/.config/git/credentials will be used. Any
凭据 也具有匹配的凭据。不创建一个好主意 如果您有时使用的旧版本的Git不 支持它。
PS
要解决concern:
您的密码将完全未加密存储(“原样”) 在〜/ .git-credentials。
您始终可以在使用之前对文件进行加密和解密。
答案 22 :(得分:0)
使用以下命令可以给你 15 分钟的超时时间。
$ git config --global credential.helper cache
您也可以通过下面的命令修改时间。这是 1 小时的示例。
$ git config --global credential.helper 'cache --timeout=3600'
如果你想在本地缓存,使用命令一小时超时。
$ git config credential.helper 'cache --timeout=3600'
答案 23 :(得分:0)
我尝试了这些步骤并且奏效了:
将令牌添加到 Android Studio (File->Settings->Version Control->Github->Add - Login with token)
转到 File->Settings->Version Control->Git 并取消选中 'Use Credential Helper'
答案 24 :(得分:0)
解决问题的正确方法是将http
更改为ssh
。
您可以使用此git remote rm origin
删除远程存储库。
然后您可以使用ssh sintax再次添加它(可以从github复制):
git remote add origin git@github.com:username/reponame.git
。
查看本文。 https://www.freecodecamp.org/news/how-to-fix-git-always-asking-for-user-credentials/
答案 25 :(得分:0)
我今天遇到了这个问题。如果您在2020年11月遇到此问题,则需要更新git版本。我收到了一封电子邮件告诉我。 这正是github团队发送的电子邮件。
我们检测到您最近尝试向GitHub进行身份验证 使用Windows的较旧版本的Git。 GitHub改变了方式 用户在使用Windows版Git时进行身份验证,现在需要 使用网络浏览器向GitHub进行身份验证。能够登录 通过网络浏览器,用户需要更新至最新版本的Git,以便 视窗。您可以从以下位置下载最新版本:
如果无法将Windows版Git更新到最新版本,请参阅 以下链接以获取更多信息和建议的解决方法:
如果您对这些更改有任何疑问或需要任何帮助 帮助,请联系GitHub支持,我们很乐意为您提供帮助 进一步协助。
谢谢,GitHub团队
答案 26 :(得分:0)
我用来在磁盘上存储我的Git存储库用户名和密码。因此,在我推送代码时git不会每次都要求用户名和密码
按照以下命令将凭据保存在本地存储中
$ git config credential.helper store
or
$ git config --global credential.helper store
从现在开始,Git将在首次访问时将凭据写入每个URL上下文的〜/ .git-credentials文件。要查看此文件的内容,可以使用如下所示的cat命令。
$ cat ~/.git-credentials
答案 27 :(得分:0)
ssh
+ key authentication
比https
+ credential.helper
您可以配置为对所有存储库使用SSH而不是HTTPS,如下所示:
git config --global url.ssh://git@github.com/.insteadOf https://github.com/
url.<base>.insteadOf
已记录在here中。
答案 28 :(得分:0)
在工作目录中获取git的网址:
git config remote.origin.url
然后:
git config credential.helper store
git push "url of your git"
最后一次询问用户名和密码
完成。
答案 29 :(得分:-1)
您可以运行
git config --global credential.helper wincred
在安装并登录系统中Windows的GIT后。