使用Git Bash配置用户和密码

161

我在Windows 7上使用Git Bash。我们使用GitHub作为代码库源。

每次我执行push或pull操作时,都需要提供用户名和密码凭据。我知道我的SSH密钥已正确设置,否则我将无法访问该存储库。(也就是说,一旦我输入凭据,push/pull操作就会正常工作。)

我已经输入了

git config --global user.name myusername
git config --global user.email myemail
git config --global github.user myusername
git config --global github.token mytoken

但是每次推送/拉取时仍然会要求我提供凭据。


2
请看...https://dev59.com/om435IYBdhLWcg3wkA5e - SteveC
请查看 https://builditmasters.com/git-config-username-and-password-global/。 - Osanda Gamage
14个回答

112

请确保使用GitHub存储库的SSH URL而不是HTTPS URL。当您使用HTTPS而不是SSH时,它会要求您输入用户名和密码。您可以检查文件.git/config,或运行git config -egit remote show origin来验证URL并在需要时更改它。

您可以使用以下方式更改URL:[1]

git remote set-url origin git+ssh://git@github.com/username/reponame.git

[1] 这部分包括对这个问题的回答。


27
由于内部防火墙规则的限制(不要问为什么),我无法使用SSH。是否有其他方法可以让Git自动登录? - Jorn
@Jorn 无法更改用于SSH的端口真是一件让人头疼的事情。 - Umar.H
1
git+ssh:// 有用吗?我尝试了一下,但是出现了错误,但是删除后再推送就可以了。 - Muhammad Mubashirullah Durrani
终于有东西可以用了! - Keytrap

109

我更喜欢在 Git Bash 中运行以下命令:

git config --global credential.helper wincred

在那个时候运行像git pull这样的命令,并输入您的凭证一次,应该会将其存储供将来使用。Git具有内置的凭证系统,可在不同的操作系统环境中工作。您可以在此处获取更多详细信息:7.14 Git工具 - 凭证存储


2
有没有 Linux 的替代方案,或者这个也适用于 Linux? - Sold Out
6
git config --global credential.helper cache这条命令会在本地计算机中缓存 GitHub 账户的用户名和密码,以便在进行 git 操作时不需要每次都输入密码。更多关于在 Git 中缓存密码的信息,请参阅 https://help.github.com/en/github/using-git/caching-your-github-password-in-git - Sam Sussman
@SoldOut 你知道 "git bash" 中的 "bash" 一词来自哪里吗? - clockw0rk
1
@clockw0rk 噢,是的,当然 - 谢谢你提供的好提示。我只是想说...即使在同一操作系统上,git 版本也可能有很大的不同,所以我认为在 UX 派生系统中可能也会有差异。 - Sold Out
1
wincred 是做什么用的? - alper
假设git已配置为使用Windows凭据管理器,以后可以通过GUI或者我个人偏好的命令行来更改密码。使用cmdkey /list git*命令列出git凭据。使用cmdkey /add target-from-list /pass:NewPassword命令添加目标到列表,并设置新密码。 - undefined

97

对于那些正在使用访问令牌和Windows环境的人,有一个简单的方法:

开始菜单 → 凭据管理器Windows凭据 → 找到该行(Git:https://whatever/your-repository/url)→ 编辑, 用户名是 "github_username" 而 密码 是您的访问令牌。


我在多家公司工作,有多个Git账户,我猜凭据管理器里没有存储多个账户的方法? - Jarrette
用户名称是 "GitHub 用户名"。 - Foysal Khandakar Joy
3
这对于设置要使用的值非常有用,但是要告诉git使用此管理器,请遵循@IcedDante或@notreadbyhumans的答案:git config --global credential.helper wincred - Noman_1

21
如果您是Mac用户并启用了钥匙串,您需要删除存储在钥匙串中的授权信息:

如果您是Mac用户并启用了钥匙串,您需要删除存储在钥匙串中的授权信息:

- Open up Keychain access
- Click "All items" under category in the left-hand column
- Search for git
- Delete all git entries.

那么您应该使用终端中的 git config 更改用户名和电子邮件:

$ git config --global user.name "Bob"

$ git config --global user.email "bob@example.com"

现在如果您尝试推送到仓库,您将被要求输入用户名和密码。输入您正在尝试切换到的登录凭据。如果您在浏览器上使用不同的用户名和密码登录GitHub或之前在终端上切换帐户,则通常会出现此问题。


这对我很有帮助。虽然没有必要删除git条目,但你可以在那里直接编辑它们。 - herrmartell

13

我在这个回答中写了一份答案:如何在Git bash中更改git账户?

不过,我也在这里分享一下。

全局更改用户名和邮箱

git config --global user.name "<username>"
git config --global user.email "<email>"

更改当前存储库的用户名和电子邮件

git config  user.name "<username>" --replace-all
git config  user.email "<email>" --replace-all

12
使用git bash for Windows时,以下组合方法适用于我(使用GitHub客户端检查存储库,即https而不是ssh):
  1. 生成个人访问令牌
  2. 在你的repo内开始一个git bash会话
  3. 运行git config --global credential.helper wincred
  4. 运行git pull
  5. 将PersonalAccessToken作为用户名
  6. 将个人访问令牌作为密码

5

添加远程仓库:

git remote add https://username:password@github.com/repodir/myrepo.git

2
现在是 git remote add <name> <url>。 - Logan George
@LoganGeorge 请问,<name> 究竟是什么? - undefined
@A__ 你想为遥控器设置的名称,例如 origin - undefined

2

尝试使用ssh-agent为Git安装SSH密钥。在使用口令后,它应该自动登录。


2

如果由于最近更改的密码而导致 Git Bash 无法正常工作。

您可以打开 Git GUI,并从那里克隆。它会要求输入密码,一旦输入,您可以关闭 GIT GUI 窗口。

现在 Git Bash 将正常工作。


2

首先使用以下命令全局存储用户名和密码:


git config --global github.user <your_username>

然后使用这个命令

git config --global credential.helper store

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