每次推送时Git都要求输入用户名

877

每次我尝试向我的repo推送时,git都要求输入用户名和密码

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

那么,如何配置git,使其不会在每次git push时要求输入用户名

我是Linux新手,但如果我没记错,在Windows中git push只需要输入密码。


1
相关问题:https://dev59.com/t3E95IYBdhLWcg3wm_Mu - Wug
4
请按照这些指示操作,并省略密码行。 - Wug
如果您只想保存用户名,那很简单,只需执行以下操作: https://help.github.com/articles/setting-your-username-in-git/ - Jim In Texas
我也有同样的问题,在这里链接了对我有用的答案:https://dev59.com/PFsV5IYBdhLWcg3wrAZJ#35942890 - Benj
显示剩余5条评论
31个回答

13

确保使用 SSH 而不是 http。请参考 这篇 Stack Overflow 回答。


5
但是我不得不使用http,因为在我的大学里,系统管理员部门已经封锁了ssh - RanRag
也许这个链接可以帮助你。 - gkris
现在有一个官方的GitHub帮助页面。对我来说,发生的情况是我在登录之前克隆了自己的一个存储库,因此它没有识别我并默认使用了HTTPS。https://help.github.com/articles/changing-a-remote-s-url/ - fIwJlxSzApHEZIl

11

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

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(如此显示:https://gist.github.com/ahoward/2885020)

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

chmod 600 ~/.netrc

10

当我只执行 git pull 命令, 或者 git pull origin xxx 命令时,Git会要求输入用户名和密码。

git config credential.helper store

它起作用了。


8
  1. git config credential.helper store

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

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

  4. 完成


1
应该使用 git push https://github.com/xxx.git 而不是 git push/push https://github.com/xxx.git - Mohsin

7
如果您使用SSH版本,密码将不会成为问题。只需要一次生成SSH密钥,让Git知道这台电脑将与此GitHub帐户一起工作,并且再也不会向我询问任何访问权限(对于此电脑)。点击 How To Generate SSH for Github获取详细信息。

7

使用个人访问令牌而非密码:

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

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

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

例如,要推送到https://github.com/blueray453/window-application-calls,你需要运行以下命令:
git push https://blueray453:<personal-access-token>@github.com/blueray453/window-application-calls

请注意,我们正在使用<personal-access-tokens>而不是<password>

有关如何创建个人访问令牌的更多详细信息,请查看documentation。简而言之,文档中说的是,您需要前往https://github.com/settings/tokens并点击Generate new token (classic),在那里选择public_repo用于公共存储库或repo用于私有存储库。然后将该密钥用作密码。

为什么仅限于以下三种解决方案:

GitHub documentation中提到:

通过HTTPS访问GitHub... 每次您使用Git与GitHub进行身份验证时,除非您使用凭据助手缓存它们,否则将提示您输入凭据以进行GitHub身份验证。
使用SSH... 每次您使用Git与GitHub进行身份验证时,除非您已存储密钥,否则将提示您输入SSH密钥的密码。

github 推荐 使用HTTPS进行连接。可能是因为他们希望你使用 Git凭证管理器。我没有使用过它,所以将留给有经验的人来处理。

这里,我只会提供Git和SSH解决方案。Git的文档讨论了如何避免反复输入相同的凭证,可以使用gitcredentials。

解决方案1

使用凭证助手缓存密码(在内存中短暂保存)。

git config --global credential.helper cache

现在运行:

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

之后,只需运行git push即可。

解决方案2

使用凭据助手将密码存储在磁盘上(永久存储)。

git config --global credential.helper 'store --file ~/.my-credentials'

你可以在文档中找到凭证将保存的位置(如果没有使用 --file 参数明确设置)。

现在运行:

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

之后,只需运行git push即可。
在这种情况下,~/.my-credentials的内容将如下所示:
https://username:<personal-access-tokens>@repository-url.com

注意:

为了解决concern,即gitcredentials将凭据完全未加密("as is"),您始终可以在使用之前对文件进行加密和解密。

解决方案 3

这几乎是直接从生成新的SSH密钥并将其添加到ssh-agent复制粘贴过来的。

  1. 使用ssh-keygen -t ed25519 -C "your_email@example.com"创建SSH密钥。如果您使用的是不支持Ed25519算法的旧系统,请使用:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 在生成SSH密钥对后,将公钥添加到您的GitHub帐户中。请访问https://github.com/settings/ssh/new

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

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

  5. 测试SSH密钥:ssh -T git@github.com

  6. 进入本地克隆的存储库目录(如果您还没有进入),然后运行:git remote set-url origin git@github.com:username/your-repository.git。现在,git push应该可以正常工作。


5

ssh + key authenticationhttps + credential.helper更加可靠。

您可以按照以下方式配置为在所有存储库中使用SSH而不是HTTPS:

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

url.<base>.insteadOf 在这里有文档记录 这里


5

快速方法

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

git config remote.origin.url

那么:
git config credential.helper store

git push "url of your git"

将仅提示输入一次用户名和密码。

完成。


5

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

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

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

按照提示进行操作。但要确保在 Authenticate Git with your GitHub credentials? 处选择 Y


5
为了避免输入用户名,但仍然提示输入密码,您可以简单地克隆包括用户名的存储库:
git clone user_name@example.gitrepo.com/my_repo.git

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接