812

每当我尝试进入我的仓库时,git 都会要求两者username & password

我每次重新输入密码都没有问题,但问题在于输入用户名。我https用来克隆我的存储库。

那么,我怎样才能配置 git 以便它不要求username每个git push.

我是 linux 新手,但 Windows 中的 IIRCgit push只要求输入密码。

4

31 回答 31

1110

编辑(由@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

于 2013-07-31T19:49:48.157 回答
216

.git/config您可以在本地存储库的文件中完成此操作。该文件包含一个名为“remote”的部分,其中包含一个名为“url”的条目。“url”条目应包含您正在谈论的存储库的 https 链接。

当您在主机“url”前加上您的用户名时,git不应再询问您的用户名。这是一个例子:

url = https://username@repository-url.com
于 2012-07-10T06:02:33.703 回答
135

使用 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 help credentials
于 2015-02-17T13:31:38.810 回答
124

按照本文在 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"
于 2016-01-22T23:06:17.703 回答
65

我发现最简单的方法是使用以下命令:

git config --global credential.https://github.com.username <your_username>

这适用于逐个站点并修改您的全局 git 配置。

要查看更改,请使用:

git config --global --edit
于 2015-12-28T05:12:26.363 回答
35

如果您使用 https 而不是 ssh,您可以.git/config按照 user701648 的说明编辑“url”,但如果您愿意,还可以添加密码:

url = https://username:password@repository-url.com
于 2014-01-19T11:24:30.370 回答
25

您可以通过在 Git 配置文件中添加以下内容来为给定站点的所有存储库设置用户名。您需要将“ https://example.com ”和“me”更改为实际 URL 和您的实际用户名。

[credential "https://example.com"]
    username = me

(这直接来自“git help credentials”)

于 2014-11-19T01:42:39.360 回答
25
git config --global credential.helper cache
于 2019-04-24T15:14:06.000 回答
22

更改克隆的仓库有效:

git remote set-url origin git@github.com:gitusername/projectname.git

使用缓存的凭据是可行的,并且设置超时期限可以让事情变得不那么烦人。如果您使用 Windows 凭据助手,那应该是最简单的方法(尤其是在 SSH 被阻止的情况下)。

于 2017-11-09T05:11:32.467 回答
13

确保您使用的是 SSH 而不是 http。检查这个SO 答案。

于 2012-07-10T10:20:58.220 回答
12

除了 user701648 的回答之外,您还可以使用以下命令将凭据存储在主文件夹(所有项目的全局文件夹)中,而不是项目文件夹中

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
于 2017-05-22T05:56:55.237 回答
11

最简单的方法是创建一个~/.netrc包含以下内容的文件:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(如图所示: https ://gist.github.com/ahoward/2885020 )

您甚至可以关闭此文件的权限,这样任何人都无法通过键入以下内容读取您的密码:

chmod 600 ~/.netrc
于 2018-09-04T23:39:36.503 回答
10

当我只 git pull, git pull origin xxx 时, git 要求用户名和密码。

git config credential.helper store

有用。

于 2018-06-12T12:26:59.240 回答
7

如果你使用SSH版本,你不会有任何密码问题。只有一次你生成SSH密钥,告诉 git,台电脑将使用这个github 帐户,并且不再询问我任何访问权限(对于这台电脑)。

如何为 Github 生成 SSH

于 2016-04-28T19:16:10.637 回答
5

为避免输入用户名,但仍会提示输入密码,您可以简单地克隆包含用户名的存储库:

git clone user_name@example.gitrepo.com/my_repo.git
于 2017-06-09T13:13:57.650 回答
5

快速方法

在工作目录中获取 git 的 url:

git config remote.origin.url

然后 :

git config credential.helper store

git push "url of your git"

将最后一次询问用户名和密码

完毕。

于 2019-06-18T17:12:10.683 回答
5

ssh+key authenticationhttps+更可靠credential.helper

您可以将所有存储库配置为使用 SSH 而不是 HTTPS,如下所示:

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOf记录在这里

于 2019-12-24T06:06:02.607 回答
5

注意,从 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 中的直接复制粘贴。我认为跟随链接会比从这里阅读更好。无论如何,我将在这里复制粘贴命令。

  1. 使用 . 创建 ssh 密钥ssh-keygen -t ed25519 -C "your_email@example.com"。您也可以使用 RSA 而不是 Ed25519 使用ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 将 SSH 密钥添加到您在 GitHub 上的帐户

  3. 如果未启动,请使用 ssh-agent 在后台启动$ eval "$(ssh-agent -s)"

  4. 使用 将您的 SSH 私钥添加到 ssh-agent $ ssh-add ~/.ssh/id_ed25519。如果您使用不同的名称创建了密钥,或者如果您要添加具有不同名称的现有密钥,请将命令中的 id_ed25519 替换为您的私钥文件的名称。

于 2020-11-20T19:28:48.680 回答
4
  1. $ git config credential.helper 存储

  2. $ git push/push https://github.com/xxx.git

  3. 然后输入您的用户名和密码。

  4. 完毕
于 2017-04-06T05:40:26.583 回答
4

你可以跑

git config --global credential.helper wincred

在系统中安装并登录 GIT for windows 之后。

于 2019-04-15T12:32:33.710 回答
3

设置全天 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

于 2020-07-08T06:03:46.010 回答
3

我使用将我的 Git 存储库用户名和密码存储在磁盘上。所以git不会在我每次推送代码时都询问用户名和密码

按照这些命令将凭据保存在本地存储中

$ git config credential.helper store
or
$ git config --global credential.helper store

从现在开始,当第一次访问时,Git 会将凭据写入每个 URL 上下文的 ~/.git-credentials 文件。要查看该文件的内容,可以使用如图所示的 cat 命令。

$ cat  ~/.git-credentials
于 2020-09-27T11:30:04.527 回答
3

解决它的正确方法是更改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/

于 2020-12-06T23:43:22.763 回答
2

(仅适用于Mac操作系统)

对于WindowsLinux ,请参考下面提到的 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之前提示一次。

于 2020-03-10T23:27:38.833 回答
2

使用以下命令可以给你 15 分钟的超时时间。

$ git config --global credential.helper cache

您也可以通过以下命令修改时间。这是 1 小时的示例。

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

如果您想在本地缓存,请使用该命令一小时超时。

$ git config credential.helper 'cache --timeout=3600'
于 2021-07-29T03:09:38.237 回答
1

对我来说,当我为我的帐户启用 2 因素身份验证 (2FA) 时,就会出现这个问题。我会输入正确的凭据,但身份验证仍然会失败,因为终端身份验证当然不要求提供身份验证代码。

我只需要为我的帐户禁用 2FA。这样做后,我只需要在git push. 从那时起他们就不再需要了。

于 2020-06-19T08:12:30.390 回答
1

当使用 HTTPS 而不是 SSH 下载时会发生这种情况,我实现的最简单的方法是我推送所有内容,因为我做了一些更改,其中它要求输入用户名和密码,然后我从我的机器中删除了目录并 git clone SSH 地址. 解决了。

只需使用 SSH 而不是 HTTP 克隆它,它不会询问用户名或密码。

即使您使用 SSH 下载,双重身份验证也会产生问题,因此禁用它可以解决问题。

于 2020-06-29T19:24:27.323 回答
1
  1. 打开 Windows 凭据管理器并从通用凭据中删除 git: https ://dev.azure.com/orgname。有关步骤,请查看为什么带有 GIT 的 TFS 不能从命令行工作?
  2. 从文件夹中删除.git-credentials文件C:\Users\{username}
  3. 确保从https://git-scm.com/download/win更新 git 最新版本
于 2021-07-20T07:18:22.080 回答
1

自 2021 年 8 月 13 日起,不再接受基于密码的登录。您现在需要使用基于令牌/SSH 的身份验证。

如果您不想每次推送时都被询问,请安装GitHub CLI,然后缓存您的凭据:

git config --global credential.helper store
gh auth login   

并按照提示进行操作。但请确保您Authenticate Git with your GitHub credentials?使用Y.

于 2021-11-28T18:48:29.770 回答
0

我今天遇到了这个问题。如果您在 2020 年 11 月遇到此问题,那么您需要更新您的 git 版本。我收到一封电子邮件,告诉我这件事。这是 github 团队的电子邮件。

我们检测到您最近尝试使用旧版本的 Windows 版 Git 对 GitHub 进行身份验证。GitHub 改变了用户在使用 Git for Windows 时的身份验证方式,现在需要使用 Web 浏览器来对 GitHub 进行身份验证。为了能够通过 Web 浏览器登录,用户需要更新到最新版本的 Git for Windows。您可以在以下位置下载最新版本:

如果您无法将适用于 Windows 的 Git 更新到最新版本,请参阅以下链接以获取更多信息和建议的解决方法:

如果您对这些更改有任何疑问或需要任何帮助,请联系 GitHub 支持,我们很乐意为您提供进一步帮助。

谢谢,GitHub 团队

于 2020-11-29T18:20:42.890 回答
0

我尝试了这些步骤并且成功了:

  1. 创建个性化访问令牌:https ://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

  2. 将令牌添加到Android Studio(文件->设置->版本控制->Github->添加-使用令牌登录)

  3. 转到文件-> 设置-> 版本控制-> Git 并取消选中“使用凭据助手”

于 2021-07-09T12:39:12.437 回答