每当我尝试进入我的仓库时,git 都会要求两者username & password
。
我每次重新输入密码都没有问题,但问题在于输入用户名。我https
用来克隆我的存储库。
那么,我怎样才能配置 git 以便它不要求username
每个git push
.
我是 linux 新手,但 Windows 中的 IIRCgit push
只要求输入密码。
编辑(由@dk14 由版主和评论建议)
警告:如果您credential.helper store
从答案中使用,您的密码将完全未加密(“原样”)存储在~/.git-credentials
. 请查阅下面的评论部分或“链接”部分的答案,特别是如果您的雇主对安全问题零容忍。
即使被接受,它也不能回答实际 OP 关于仅省略用户名(而不是密码)的问题。对于有确切问题的读者@grawity 的答案可能会派上用场。
原始答案(@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
.git/config
您可以在本地存储库的文件中完成此操作。该文件包含一个名为“remote”的部分,其中包含一个名为“url”的条目。“url”条目应包含您正在谈论的存储库的 https 链接。
当您在主机“url”前加上您的用户名时,git
不应再询问您的用户名。这是一个例子:
url = https://username@repository-url.com
运行以下命令以启用凭据缓存:
$ 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
按照本文在 GitHub 上的描述添加新的 SSH 密钥。
如果 Git 仍然要求您输入用户名和密码,请尝试在远程 URL 中更改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"
我发现最简单的方法是使用以下命令:
git config --global credential.https://github.com.username <your_username>
这适用于逐个站点并修改您的全局 git 配置。
要查看更改,请使用:
git config --global --edit
如果您使用 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 help credentials”)
git config --global credential.helper cache
更改克隆的仓库有效:
git remote set-url origin git@github.com:gitusername/projectname.git
使用缓存的凭据是可行的,并且设置超时期限可以让事情变得不那么烦人。如果您使用 Windows 凭据助手,那应该是最简单的方法(尤其是在 SSH 被阻止的情况下)。
确保您使用的是 SSH 而不是 http。检查这个SO 答案。
除了 user701648 的回答之外,您还可以使用以下命令将凭据存储在主文件夹(所有项目的全局文件夹)中,而不是项目文件夹中
$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
最简单的方法是创建一个~/.netrc
包含以下内容的文件:
machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD
(如图所示: https ://gist.github.com/ahoward/2885020 )
您甚至可以关闭此文件的权限,这样任何人都无法通过键入以下内容读取您的密码:
chmod 600 ~/.netrc
当我只 git pull, git pull origin xxx 时, git 要求用户名和密码。
git config credential.helper store
有用。
如果你使用SSH版本,你不会有任何密码问题。只有一次你生成SSH密钥,告诉 git,这台电脑将使用这个github 帐户,并且不再询问我任何访问权限(对于这台电脑)。
为避免输入用户名,但仍会提示输入密码,您可以简单地克隆包含用户名的存储库:
git clone user_name@example.gitrepo.com/my_repo.git
在工作目录中获取 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 而不是 HTTPS,如下所示:
git config --global url.ssh://git@github.com/.insteadOf https://github.com/
url.<base>.insteadOf
记录在这里。
请注意,从 2021 年 8 月 13 日开始,github 在对 Git 操作进行身份验证时将不再接受帐户密码,并将要求对 GitHub.com 上所有经过身份验证的 Git 操作使用基于令牌的身份验证。您也可以在您喜欢的地方继续使用 SSH 密钥。
因此,对于您必须使用的给定身份验证上下文的用户名静态配置(使用 github 时):
https://username:<personal-access-tokens>@repository-url.com
请注意,我们正在使用<personal-access-tokens>
而不是<password>
有关如何创建个人访问令牌的更多详细信息,请查看文档。
github文档说:
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 的文档讨论了如何避免使用 gitcredentials 一遍又一遍地输入相同的凭据。
解决方案 1
使用凭证助手缓存密码(在内存中短时间)。
git config --global credential.helper cache
解决方案 2
使用凭证助手存储密码(无限期地在磁盘上)。
git config --global credential.helper 'store --file ~/.my-credentials'
您可以在文档中找到凭证的保存位置(如果未使用 --file 明确设置)。
注意: 为了解决 gitcredentials 存储完全未加密的凭据(“原样”)的问题,您始终可以在使用前加密文件并解密它。
解决方案 3
这几乎是从生成新的 SSH 密钥并将其添加到 ssh-agent 中的直接复制粘贴。我认为跟随链接会比从这里阅读更好。无论如何,我将在这里复制粘贴命令。
使用 . 创建 ssh 密钥ssh-keygen -t ed25519 -C "your_email@example.com"
。您也可以使用 RSA 而不是 Ed25519 使用ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
如果未启动,请使用 ssh-agent 在后台启动$ eval "$(ssh-agent -s)"
使用 将您的 SSH 私钥添加到 ssh-agent $ ssh-add ~/.ssh/id_ed25519
。如果您使用不同的名称创建了密钥,或者如果您要添加具有不同名称的现有密钥,请将命令中的 id_ed25519 替换为您的私钥文件的名称。
$ git config credential.helper 存储
$ git push/push https://github.com/xxx.git
然后输入您的用户名和密码。
你可以跑
git config --global credential.helper wincred
在系统中安装并登录 GIT for windows 之后。
设置全天 24 小时的凭据。
git config --global credential.helper 'cache --timeout=86400'
否则 1 小时将 86400 秒替换为 3600。
或者
“缓存”身份验证助手的所有配置选项:
git help credential-cache
我使用将我的 Git 存储库用户名和密码存储在磁盘上。所以git不会在我每次推送代码时都询问用户名和密码
按照这些命令将凭据保存在本地存储中
$ git config credential.helper store
or
$ git config --global credential.helper store
从现在开始,当第一次访问时,Git 会将凭据写入每个 URL 上下文的 ~/.git-credentials 文件。要查看该文件的内容,可以使用如图所示的 cat 命令。
$ cat ~/.git-credentials
解决它的正确方法是更改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/
对于Windows和Linux ,请参考下面提到的 Github 文档链接。
来自 Github 文档:文档链接
在 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 全局使用 osxkeychain 获取 git 凭据:
git config --global credential.helper osxkeychain
它会在将凭据保存到keychain之前提示一次。
使用以下命令可以给你 15 分钟的超时时间。
$ git config --global credential.helper cache
您也可以通过以下命令修改时间。这是 1 小时的示例。
$ git config --global credential.helper 'cache --timeout=3600'
如果您想在本地缓存,请使用该命令一小时超时。
$ git config credential.helper 'cache --timeout=3600'
对我来说,当我为我的帐户启用 2 因素身份验证 (2FA) 时,就会出现这个问题。我会输入正确的凭据,但身份验证仍然会失败,因为终端身份验证当然不要求提供身份验证代码。
我只需要为我的帐户禁用 2FA。这样做后,我只需要在git push
. 从那时起他们就不再需要了。
当使用 HTTPS 而不是 SSH 下载时会发生这种情况,我实现的最简单的方法是我推送所有内容,因为我做了一些更改,其中它要求输入用户名和密码,然后我从我的机器中删除了目录并 git clone SSH 地址. 解决了。
只需使用 SSH 而不是 HTTP 克隆它,它不会询问用户名或密码。
即使您使用 SSH 下载,双重身份验证也会产生问题,因此禁用它可以解决问题。
.git-credentials
文件C:\Users\{username}
。自 2021 年 8 月 13 日起,不再接受基于密码的登录。您现在需要使用基于令牌/SSH 的身份验证。
如果您不想每次推送时都被询问,请安装GitHub CLI,然后缓存您的凭据:
git config --global credential.helper store
gh auth login
并按照提示进行操作。但请确保您Authenticate Git with your GitHub credentials?
使用Y
.
我今天遇到了这个问题。如果您在 2020 年 11 月遇到此问题,那么您需要更新您的 git 版本。我收到一封电子邮件,告诉我这件事。这是 github 团队的电子邮件。
我们检测到您最近尝试使用旧版本的 Windows 版 Git 对 GitHub 进行身份验证。GitHub 改变了用户在使用 Git for Windows 时的身份验证方式,现在需要使用 Web 浏览器来对 GitHub 进行身份验证。为了能够通过 Web 浏览器登录,用户需要更新到最新版本的 Git for Windows。您可以在以下位置下载最新版本:
如果您无法将适用于 Windows 的 Git 更新到最新版本,请参阅以下链接以获取更多信息和建议的解决方法:
如果您对这些更改有任何疑问或需要任何帮助,请联系 GitHub 支持,我们很乐意为您提供进一步帮助。
谢谢,GitHub 团队
我尝试了这些步骤并且成功了:
将令牌添加到Android Studio(文件->设置->版本控制->Github->添加-使用令牌登录)
转到文件-> 设置-> 版本控制-> Git 并取消选中“使用凭据助手”