每当我尝试推入我的存储库时,git都会要求用户名和密码。

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

那么,我如何配置git,使它在每次git推送时都不需要用户名。

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


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

当您在主机“url”前面加上用户名时,git不应该再要求您输入用户名。下面是一个示例:

url = https://username@repository-url.com

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


编辑(由@dk14根据主持人和评论的建议)

警告:如果您从答案中使用credential.helper存储,您的密码将完全未加密(“原样”)存储在~/.git凭据中。请参阅下面的评论部分或“链接”部分的答案,特别是如果您的雇主对安全问题零容忍的话。

即使被接受,它也不能回答实际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帮助凭据


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

url = https://username:password@repository-url.com

您可以通过在Git配置文件中放置以下内容来设置给定站点上所有存储库的用户名。你会想改变的”https://example.com“和”我“添加到实际URL和您的实际用户名。

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

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


使用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

我找到的最简单的方法是使用以下命令:

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

这会逐个站点工作,并修改全局git配置。

要查看更改,请使用:

git config --global --edit

在GitHub上添加新的SSH密钥,如本文所述。

如果Git仍然要求您输入用户名和密码,请尝试更改https://github.com/到git@github.com:在远程URL中:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

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

如何为Github生成SSH


git-config credential.helper存储git推/推https://github.com/xxx.git然后输入您的用户名和密码。多恩


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

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

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

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

更改克隆的存储库可以:

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

使用缓存的凭据是有效的,设置超时时间可以减少麻烦。如果您使用Windows凭据助手,这应该是最简单的方法(特别是在SSH被阻止的情况下)。


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

git config credential.helper store

它起作用。


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

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

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

您甚至可以关闭此文件的权限,以便没有人可以通过键入以下内容读取您的密码:

chmod 600 ~/.netrc

你可以跑了

git config --global credential.helper wincred

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


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+密钥身份验证比https://credential.helper更可靠

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

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

网址<此处记录了base>.installOf。


(仅适用于Mac OS)

对于Windows和Linux,请参阅下面提到的Github文档链接。

来自Github文档:文档链接

在Git中缓存GitHub密码

您需要Git 1.7.10或更高版本才能使用osxkeychain凭据帮手检查Git版本:Git--version要了解osxkeychain助手是否已安装:git凭证osxkeychain如果您收到以下响应,那么您已经安装并准备好在mac上使用:>用法:git credential osxkeychain<get|store|erase>如果您没有得到如上所示的响应,则可以运行以下命令安装它:git凭证osxkeychain要告诉git全局使用osxkeychain获取git凭据:git-config--全局凭证.helper osxkeychain在将凭据保存到密钥链之前,它将提示一次。


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

我只需要为我的帐户禁用2FA。这样做后,我只能在git推送期间输入一次凭据。从那时起,他们就不需要了。


当一个人使用HTTPS而不是SSH下载时,就会出现这种情况。我实现的最简单的方式是,当我做了一些更改时,我推送了所有内容,其中要求输入用户名和密码,然后我从我的机器中删除了目录,并将其从gitclone SSH地址中删除。解决了。

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

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


设置全天(即24小时)的凭据。

git config --global credential.helper 'cache --timeout=86400'

否则1小时,将86400秒替换为3600秒。

OR

“缓存”身份验证助手的所有配置选项:

git帮助凭据缓存

有关详细信息:https://docs.github.com/en/get-started/getting-started-with-git/caching-your-github-credentials-in-git


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

按照以下命令在本地存储中保存凭据

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

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

$ cat  ~/.git-credentials

请注意,从2021 8月13日开始,github在对Git操作进行身份验证时不再接受帐户密码,并且将要求对github.com上所有经过身份验证的Git操作使用基于令牌的身份验证。您也可以继续使用SSH密钥。

因此,对于必须使用的给定身份验证上下文的用户名静态配置(使用github时):

https://username:<personal-access-tokens>@repository-url.com

请注意,我们使用的是<个人访问令牌>,而不是<密码>

有关如何创建个人访问令牌的详细信息,请查看文档。

github文档称:

HTTPS上的GitHub。。。每次使用Git进行身份验证时GitHub,将提示您输入凭据以进行身份验证使用GitHub,除非您使用凭据助手缓存它们。...使用SSH。。。每次使用Git向GitHub进行身份验证时,除非您已经存储密钥。

github建议通过HTTPS进行连接。可能是因为他们希望您使用Git凭据管理器核心。但是Git凭据管理器核心在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代理的直接复制粘贴。我认为点击链接会比在这里阅读更好。无论如何,我会在这里复制粘贴命令。

使用ssh keygen-t ed25519-C创建ssh密钥“your_email@example.com“.您也可以使用ssh keygen-t RSA-b 4096-C使用RSA代替Ed25519”your_email@example.com"将SSH密钥添加到GitHub上的帐户。如果未启动,请在后台使用$eval“$(ssh代理-s)”启动ssh代理使用$SSH-Add~/.SSH/id_ed25519将SSH私钥添加到SSH代理。如果您使用不同的名称创建了密钥,或者正在添加具有不同名称的现有密钥,请将命令中的id_ed25519替换为私钥文件的名称。


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

我们检测到您最近试图向GitHub进行身份验证使用旧版本的Git for Windows。GitHub改变了用户在使用Git for Windows时进行身份验证,现在需要使用web浏览器验证GitHub。能够登录通过web浏览器,用户需要更新到最新版本的Git窗户。您可以在以下位置下载最新版本:https://gitforwindows.org/如果您无法将Git for Windows更新到最新版本,请参阅有关详细信息和建议的解决方法,请单击以下链接:https://aka.ms/gcmcore-githubauthchanges如果您对这些更改有任何疑问或需要帮助,请联系GitHub支持,我们很乐意进一步协助。https://support.github.com/contact谢谢,GitHub团队


解决这个问题的正确方法是将http更改为ssh。

您可以使用此git remote rm源来删除远程回购。

然后,您可以使用ssh-sintax(可以从github复制)再次添加它:git远程添加原点git@github.com:username/reportname.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 studio(文件->设置->版本控制->Github->添加-使用令牌登录)转到文件->设置->版本控制->Git并取消选中“使用凭据助手”


打开Windows凭据管理器并删除git:https://dev.azure.com/orgname来自通用凭据。有关步骤,请查看为什么带有GIT的TFS无法从命令行工作?从文件夹C:\Users\{username}中删除.git凭据文件。确保从更新git最新版本https://git-scm.com/download/win


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

$ git config --global credential.helper cache

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

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

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

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

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

如果你不想每次推送时都被问到,请安装GitHubCLI,然后缓存凭据:

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

并按照提示进行操作。但请确保使用GitHub凭据检查Authenticate Git?带有Y。