使用 Git Bash 配置用户和密码

我在 Windows7上使用 GitBash,我们使用 GitHub 作为我们的库源。

每次我推或拉,我必须提供用户和密码凭证。我知道我的 SSH 密钥设置正确,否则我将无法访问存储库。(也就是说,一旦我输入了凭证,推/拉操作就会正常工作。)

我已经进去了

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

但尽管如此,每次我推/拉的时候,我都会被要求提供证书。

877057 次浏览

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

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

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

[1]这一部分包含了 这个问题的答案。

尝试 SSH-agent 安装与 Git 一起使用的 SSH 密钥。

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

git config --global credential.helper wincred

此时,运行类似 git pull的命令并输入您的凭据一次,就应该将其存储起来以备将来使用。Git 有一个内置的凭证系统,可以在不同的操作系统环境中工作。你可以在这里得到更多的细节: < a href = “ https://Git-scm.com/book/en/v2/Git-Tools-Credential-Storage”rel = “ noReferrer”> 7.14 Git Tools-Credential Storage

如果您是 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,或者在终端上先前切换了帐户,通常会出现这个问题。

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

开始菜单→ 证书经理视窗证书→查找行( https://whatever/your-repository/url )→编辑, User name 是“ github _ username”,密码是您的访问令牌。

如果您的 repo 是 HTTPS repo,git config-e 在 git bash 中给出这个命令。 通过在插入模式下打开更新用户名和密码,更改密码或用户名 give: x 和 Cntrl + z 键 它将保存并退出

因此,从那时起,当您将代码拉/推到存储库时,它不会询问密码。

对于 Windows 的 git bash,以下其他答案的组合适合我(使用 GitHub 客户端检出存储库,即 https,而不是 ssh) :

  1. 生成个人访问令牌
  2. 在回购中启动一个 git bash 会话
  3. 运行 git config --global credential.helper wincred
  4. 运行 git pull
  5. 给出 PersonalAccessToken 作为用户名
  6. 给予个人访问令牌作为密码

将远程添加为:

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

我在另一个答案中写了一个答案: 如何在 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

如果由于最近更改了密码,git bash 无法正常工作。

您可以打开 Git GUI,然后从那里进行克隆 密码,一旦输入,您可以关闭 GITGUI 窗口。

现在 Git 狂欢会很完美。

GnuPG 可以用作跨平台的密码管理器,包括 GIT HTTPS 凭证。 只要使用您的 GPG 密钥对加密/解密密码(令牌...)。 要加密令牌(密码) ,运行:

gpg -e -o [PATH_TO_ENCRYPTED_TOKEN] -r "[GPG_KEY_USER_ID]"

键入令牌(或复制粘贴它) ,然后按 Ctrl + D 结束输入,或使用文件名与此令牌。 然后创建自定义 git 凭据助手: BASH 文件,名称为 git-credential-[ HELPER _ LAST _ NAME ](不带 SH 扩展名) :

#!/bin/bash
token=`gpg -d -r "[GPG_KEY_USER_ID]" [PATH_TO_ENCRYPTED_TOKEN] 2>/dev/null`
echo protocol=https
echo host=[YOUR_HOST]
echo username=[YOUR_USER_NAME]
echo password=$token

在 MS-WINDOWS 中,GIT-BASH 路径名必须使用 UNIX 文件分隔符-“/”,只需在 GIT-BASH 中运行“ echo $PATH”! 然后将助手放置到 $PATH 中的位置。 然后添加并检查助手:

git config --global credential.helper [HELPER_LAST_NAME]
#then check it (password will be printed as plain text!!!):
git credential-[HELPER_LAST_NAME]

GnuPG 可以在 Maven 项目中用作密码管理器,而不是 Maven 的密码加密方法。 诸如此类。

非常简单的解决方案,你必须使用报价:

git config --global user.name "your name"

如果您尚未尝试此选项。它解决了在 Git Bash 上配置用户名和密码的问题。也就是说,能够推到你的回购。

$ git init
$ git config user.name "yourusername"
$ git config user.email "youremail@email.com"
$ git add *
$ git commit -m "msg to be committed"
$ git push origin master/main