每当我尝试推送到我的仓库git都要求username & password。
username & password
我每次重新输入密码都没有问题,但问题是输入用户名。我使用https克隆我的存储库。
https
那么,我如何配置git,使其不会在每个git push上要求username。
git push
username
我是Linux新手,但Windowsgit push中的IIRC只要求密码。
您可以在本地存储库的.git/config文件中完成此操作。此文件包含一个名为“远程”的部分,其中包含一个名为“url”的条目。“url”条目应包含您正在谈论的存储库的https链接。
.git/config
当您在主机“url”前面加上您的用户名时,git不应该再询问您的用户名。这是一个例子:
git
url = https://username@repository-url.com
确保您使用的是SSH而不是超文本传输协议。选中这个 SO答案。
编辑(由@dk14根据版主和评论的建议)
警告:如果您在答案中使用credential.helper store,您的密码将完全未加密(“按原样”)存储在~/.git-credentials。请参阅下面的评论部分或“链接”部分的答案,特别是如果您的雇主对安全问题零容忍。
credential.helper store
~/.git-credentials
即使被接受,它也没有回答实际OP关于只省略用户名(而不是密码)的问题。对于有这个问题的读者,@grawity的回答可能会派上用场。
原答案(作者:@亚历山大·朱):
您可以使用以下命令存储凭据
$ git config credential.helper store$ git push http://example.com/repo.gitUsername: <type your username>Password: <type your password>
我建议你阅读$ git help credentials
$ git help credentials
如果您使用https而不是ssh,您可以在.git/config如user701648所说中编辑“url”,但如果需要,您也可以添加密码:
url = https://username:password@repository-url.com
您可以通过在Git配置文件中放入以下内容来为给定站点的所有存储库设置用户名。您需要将“https://example.com”和“me”更改为实际URL和您的实际用户名。
[credential "https://example.com"]username = me
(这直接来自“git帮助凭据”)
运行以下命令以启用凭据缓存:
$ 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 config --global credential.https://github.com.username <your_username>
这可以逐个站点工作并修改您的全局git配置。
要查看更改,请使用:
git config --global --edit
添加新的SSH键,如这篇文章在github所述。
如果Git仍然要求您输入用户名和密码,请尝试将远程URL中的https://github.com/更改为git@github.com::
https://github.com/
git@github.com:
$ git config remote.origin.urlhttps://github.com/dir/repo.git $ git config remote.origin.url "git@github.com:dir/repo.git"
如果您使用SSH版本,您将不会有任何密码问题。只有一次您生成SSH密钥,告诉git,这个 PC将与这个 github帐户一起使用,并且再也不会问我任何访问权限(对于这台PC)。
如何为Github生成SSH
git config credential.helper store
git push/push https://github.com/xxx.git
然后输入您的用户名和密码。
完成
除了user701648的回答之外,您还可以使用以下命令将凭据存储在主文件夹(所有项目的全局)中,而不是项目文件夹中
$ git config --global credential.helper store$ git push http://example.com/repo.gitUsername: <type your username>Password: <type your password>
为了避免输入用户名,但仍会提示输入密码,那么您可以简单地克隆您的存储库,包括用户名:
git clone user_name@example.gitrepo.com/my_repo.git
更改克隆的repo工作原理:
git remote set-url origin git@github.com:gitusername/projectname.git
使用缓存的凭据可以工作,设置超时时间会让事情变得不那么烦人。如果您使用Windows凭据助手,这应该是最简单的方法(尤其是在SSH被阻止的情况下)。
当我只git拉,git拉起源xxx,git要求用户名和密码。
它奏效了。
最简单的方法是创建一个包含以下内容的~/.netrc文件:
~/.netrc
machine github.comlogin YOUR_GITHUB_USERNAMEpassword YOUR_GITHUB_PASSWORD
(如图所示:https://gist.github.com/ahoward/2885020)
您甚至可以关闭此文件的权限,以便没有人可以通过键入以下命令读取您的密码:
chmod 600 ~/.netrc
你可以跑了
git config --global credential.helper wincred
在您的系统中安装并登录到Windows的GIT之后。
git config --global credential.helper cache
在工作目录中获取您的git的url:
git config remote.origin.url
然后:
git config credential.helper store git push "url of your git"
会问用户名和密码最后一次
完成。
ssh+key authentication比https+credential.helper更可靠
ssh
key authentication
credential.helper
您可以配置为对所有存储库使用SSH而不是HTTPS,如下所示:
git config --global url.ssh://git@github.com/.insteadOf https://github.com/
url.<base>.insteadOf被记录为这里。
url.<base>.insteadOf
对于windows和Linux,请参阅下面提到的Github的留档链接。
来自Github文档:文档链接
在Git中缓存您的GitHub密码
您需要Git 1.7.10或更高版本才能使用osxkeychain凭据助手。
检查您的Git版本:git --version块状报价>
检查您的Git版本:git --version
git --version
找出osxkeychain助手已安装:
git credential-osxkeychain
如果你得到以下响应,那么你已经安装并准备好在你的mac上使用它:
> Usage: git credential-osxkeychain <get|store|erase>
如果您没有收到如上所示的响应,那么您可以运行以下命令安装它:
git credential-osxkeychain块状报价>
告诉git全局使用osxkeychain获取git凭据:
git config --global credential.helper osxkeychain
在将凭据保存到钥匙扣之前,它会提示一次。
对我来说,当我为我的帐户启用2因素身份验证(2FA)时出现此问题。我会输入正确的凭据,身份验证仍然会失败,因为当然终端身份验证不要求身份验证代码。
我只需要为我的帐户禁用2FA。这样做后,我必须在git push期间输入我的凭据一次。从那时起就不需要它们了。
当一个人使用HTTPS而不是SSH下载时,就会发生这种情况,我实现的简单方法是我推送所有内容,因为我做了一些更改,一旦它要求用户名和密码,然后我从我的机器中删除目录并git克隆SSH地址。它解决了。
只需使用SSH而不是HTTP克隆它,它不会要求用户名或密码。
即使您使用SSH下载,双重验证也会产生问题,因此禁用它可以解决问题。
设置全天(即24小时)的凭据。
git config --global credential.helper 'cache --timeout=86400'
否则1小时将86400秒替换为3600秒。
或
“缓存”身份验证助手的所有配置选项:
git help credential-cache
更多信息:https://docs.github.com/en/get-started/getting-started-with-git/caching-your-github-credentials-in-git
我用来将我的Git存储库用户名和密码存储在磁盘上。所以当我推送代码时,git不会每次都询问用户名和密码
按照这些命令将凭据保存在本地存储中
$ git config credential.helper storeor$ git config --global credential.helper store
从现在开始,当第一次访问时,Git会将凭据写入每个URL上下文的~/. git-凭据文件。要查看此文件的内容,您可以使用cat命令,如图所示。
$ cat ~/.git-credentials
请注意,从2021年8月13日开始,GitHub在验证Git操作时将不再接受帐户密码,并将要求对GitHub.com.上所有经过身份验证的Git操作使用基于令牌的身份验证。
因此,对于您必须使用的给定身份验证上下文的用户名的静态配置(使用github时):
https://username:<personal-access-tokens>@repository-url.com
请注意,我们使用的是<personal-access-tokens>而不是<password>
<personal-access-tokens>
<password>
有关如何创建个人访问令牌的更多详细信息,请查看留档。
github留档说:
GitHub over HTTPS…每次使用Git进行身份验证时GitHub,系统将提示您输入凭据进行身份验证使用GitHub,除非您使用凭证助手缓存它们。…使用SSH…每次你使用Git在GitHub上进行身份验证时,系统将提示您输入SSH密钥密码,除非存储了密钥.
GitHub over HTTPS…每次使用Git进行身份验证时GitHub,系统将提示您输入凭据进行身份验证使用GitHub,除非您使用凭证助手缓存它们。
…
使用SSH…每次你使用Git在GitHub上进行身份验证时,系统将提示您输入SSH密钥密码,除非存储了密钥.
GitHub建议通过HTTPS连接。可能是因为它们希望您使用 Git Credential Manager Core。但是Git Credential Manager Core在Windows和macOS上运行。Linux支持(直到发布时)在早期预览中。
因此,我将只提供Git和SSH解决方案。
Git的留档讨论了如何避免使用git凭据反复输入相同的凭据。
解决方案1
使用凭据助手缓存密码(在内存中短时间)。
解决方案2
使用凭据助手存储密码(无限期地存储在磁盘上)。
git config --global credential.helper 'store --file ~/.my-credentials'
您可以在留档中找到凭证的保存位置(如果没有使用--file显式设置)。
注意:要解决关注的问题,即git凭据存储的凭据完全未加密(“按原样”),您可以随时加密文件并在使用前对其进行解密。
解决方案3
这几乎是从生成新的SSH密钥并将其添加到ssh代理直接复制粘贴。我认为遵循链接比从这里阅读更好。无论如何,我将在这里复制粘贴命令。
使用ssh-keygen -t ed25519 -C "your_email@example.com"创建ssh密钥。您也可以使用RSA而不是使用ssh-keygen -t rsa -b 4096 -C "your_email@example.com"的Ed25519
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
将SSH密钥添加到您在GitHub上的帐户。
如果未启动,请使用$ eval "$(ssh-agent -s)"在后台启动ssh-agent
$ eval "$(ssh-agent -s)"
使用$ ssh-add ~/.ssh/id_ed25519将SSH私钥添加到ssh代理。如果您使用不同的名称创建了密钥,或者如果您要添加具有不同名称的现有密钥,请将命令中的id_ed25519替换为私钥文件的名称。
$ ssh-add ~/.ssh/id_ed25519
我今天遇到了这个问题。如果您在2020年11月面临此问题,那么您需要更新您的git版本。我收到了一封告诉我这件事的电子邮件。以下是github团队的电子邮件。
我们检测到您最近试图向GitHub进行身份验证使用旧版本的Git for Windows。GitHub改变了如何用户在使用Git for Windows时进行身份验证,现在需要使用Web浏览器对GitHub进行身份验证。为了能够登录通过Web浏览器,用户需要更新到最新版本的GitWindows。您可以在以下位置下载最新版本:https://gitforwindows.org/如果您无法将Git for Windows更新到最新版本,请参阅有关更多信息和建议的解决方法的以下链接:https://aka.ms/gcmcore-githubauthchanges如果您对这些更改有任何疑问或需要任何协助,请联系GitHub支持,我们很乐意#36825;助https://support.github.com/contact感谢GitHub团队
我们检测到您最近试图向GitHub进行身份验证使用旧版本的Git for Windows。GitHub改变了如何用户在使用Git for Windows时进行身份验证,现在需要使用Web浏览器对GitHub进行身份验证。为了能够登录通过Web浏览器,用户需要更新到最新版本的GitWindows。您可以在以下位置下载最新版本:
如果您无法将Git for Windows更新到最新版本,请参阅有关更多信息和建议的解决方法的以下链接:
如果您对这些更改有任何疑问或需要任何协助,请联系GitHub支持,我们很乐意#36825;助
感谢GitHub团队
正确的解决方法是将http更改为ssh。
http
您可以使用此git remote rm origin删除远程存储库。
git remote rm origin
然后您可以使用ssh sintax再次添加它(您可以从github复制):git remote add origin git@github.com:username/reponame.git.
git remote add origin git@github.com:username/reponame.git
看看这篇文章。https://www.freecodecamp.org/news/how-to-fix-git-always-asking-for-user-credentials/
我尝试了这些步骤,它奏效了:
创建个性化访问令牌:https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
将令牌添加到Android工作室(文件->设置->版本控制->Github->添加-使用令牌登录)
转到文件->设置->版本控制->Git并取消选中使用凭证助手
C:\Users\{username}
.git-credentials
使用下面的命令可以给你15分钟的超时时间。
$ git config --global credential.helper cache
您也可以通过下面的命令修改时间。这是1小时的示例。
$ git config --global credential.helper 'cache --timeout=3600'
如果您想在本地缓存,请使用命令一小时超时。
$ git config credential.helper 'cache --timeout=3600'
自2021年8月13日起,不再接受基于密码的登录。您现在需要使用基于令牌/SSH的身份验证。
如果你不想每次推送时都被问到,安装GitHubCLI,然后缓存您的凭据:
git config --global credential.helper storegh auth login
并按照提示进行操作。但要确保将Authenticate Git with your GitHub credentials?与Y对齐。
Authenticate Git with your GitHub credentials?
Y