Git每次推送时都会询问用户名

时间:2012-07-09 21:25:38

标签: linux git github

每当我尝试推入我的repo git时都要求username & password

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

那么,我如何配置git,以便它不会在每个username上请求git push

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

30 个答案:

答案 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存储库进行永久性身份验证

运行以下命令以启用凭据缓存:

$ 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)

按照this article on GitHub

中的说明添加新的SSH密钥

如果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帐户一起使用,从不再向我询问任何访问权限(针对此电脑)。

How To Generate SSH for Github

答案 13 :(得分:3)

git config --global credential.helper缓存

答案 14 :(得分:3)

  1. 打开 Windows 凭据管理器并从通用凭据中删除 git:https://dev.azure.com/orgname。有关步骤,请查看 Why TFS with GIT is not working from command line?
  2. 从文件夹 .git-credentials 中删除 C:\Users\{username} 文件。
  3. 确保从 https://git-scm.com/download/win 更新 git 最新版本

答案 15 :(得分:2)

  1. $ git config credential.helper store

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

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

  4. 完成

答案 16 :(得分:2)

为避免输入用户名,但仍然提示输入密码,您只需克隆您的存储库,包括用户名:

git clone user_name@example.gitrepo.com/my_repo.git

答案 17 :(得分:2)

(仅适用于 Mac 操作系统)

对于 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

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-credentials,则不会使用此文件中存储的

凭据 也具有匹配的凭据。不创建一个好主意 如果您有时使用的旧版本的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)

我尝试了这些步骤并且奏效了:

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

  2. 将令牌添加到 Android Studio (File->Settings->Version Control->Github->Add - Login with token)

  3. 转到 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 authenticationhttps + 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后。