我想在GitExtensions、Sourcetree或任何其他GitGUI中自动使用推拉,每次都不需要在提示中输入用户名和密码。

那么我如何在Git中保存我的凭据?


当前回答

推荐的安全方法:SSH

创建SSH GitHub密钥。转到github.com→ 设置→ SSH和GPG密钥→ 新SSH密钥。现在将您的私钥保存到计算机。

然后,如果私钥保存为~/.ssh/目录中的id_rsa,我们将其添加为身份验证:

ssh-add -K ~/.ssh/id_rsa

更安全的方法:缓存

我们可以使用git凭据缓存在一段时间内缓存用户名和密码。只需在CLI(终端或命令提示符)中输入以下内容:

git config --global credential.helper cache

您还可以按如下方式设置超时时间(以秒为单位):

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

其他回答

只需将您的凭据放入URL,如下所示:

https://Username`**:**`Password`**@**`github.com/myRepoDir/myRepo.git`

您可以这样存储:

git remote add myrepo https://Userna...

…使用它的示例:

git push myrepo master`

现在就是列出URL别名:

git remote -v

…以及删除其中一个的命令:

git remote rm myrepo

在浏览了数十篇StackOverflow文章、博客等之后,我尝试了每一种方法,这就是我想到的。它涵盖了一切。

普通的DevOps Git证书和私有包备忘单

这些都是在没有交互式密码提示的情况下安全验证Git以克隆存储库的所有方法和工具。

SSH公钥SSH-ASKPASSAPI访问令牌GIT_ASKPASS.gitconfig代替.gitconfig[凭据].git凭据.netrc文件私人套餐(免费)Node.js/npm包.jsonPython/pip/geggs requirements.txt红宝石宝石宝石文件转到.mod

银子弹

只想工作™? 这是神奇的银弹。

获取您的访问令牌(如果您需要GitHub或Gitea说明,请参阅备忘单中的部分),并将其设置在环境变量中(用于本地开发和部署):

MY_GIT_TOKEN=xxxxxxxxxxxxxxxx

对于GitHub,逐字复制并运行以下行:

git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"

祝贺现在,无论是使用HTTPS还是SSH URL,任何自动克隆Git存储库的工具都不会受到密码提示的阻碍。

不使用GitHub?

对于其他平台(Gitea、GitHub和Bitbucket),只需更改URL即可。不要更改用户名(尽管是任意的,但不同的配置条目需要它们)。

兼容性

这在macOS、Linux、Windows(Bash)、Docker、CircleCI、Heroku、Akkeris等本地运行。

更多信息

请参阅备忘单的“.gitconfig insteadOf”部分。

安全

请参阅备忘单的“安全”部分。

对于Windows用户,这种方式将起作用:

注意:如果您为GitHub启用了双因素身份验证,请暂时禁用它

步骤1转到控制面板→ 用户帐户→ 凭据管理器→ Windows凭据步骤2转到“通用凭据”部分→ 添加通用凭据步骤3-填写字段Internet或网络地址:git。https://github.com用户名:您的GitHub用户名密码:您的GitHub用户名现在单击“确定”。这将将您的GitHub帐户的密码和用户名保存到本地计算机

对于全局设置,打开终端(从任何位置),运行以下命令:

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

这样,您计算机上的任何本地Git存储库都将使用该信息。

您可以通过执行以下操作为每个存储库单独配置:

在存储库文件夹中打开终端。运行以下操作:git-config user.name“您的用户名”git-config user.password“您的密码”

它只影响该文件夹(因为您的配置是本地的)。

查看官方Git文档:

如果使用SSH传输连接到远程设备您可以使用不带密码短语的密钥无需输入用户名和密码即可安全地传输数据。然而,这在HTTP协议中是不可能的——每个连接需要用户名和密码。这对于具有双因素身份验证的系统,其中用于密码是随机生成的,无法读出。幸运的是,Git有一个证书系统可以帮助解决这个问题。Git公司框中提供了几个选项:默认情况下根本不缓存。每个连接都会提示您输入您的用户名和密码。“缓存”模式将凭据保存在内存中一段时间时间没有一个密码存储在磁盘上15分钟后从缓存中清除。“存储”模式将凭证保存到磁盘上的纯文本文件中,它们永远不会过期。这意味着在您更改密码之前对于Git主机,您不必输入凭据再一次这种方法的缺点是存储了密码在主目录中的明文文件中。如果您使用的是Mac,Git带有“osxkeychain”模式在连接到您的系统帐户。此方法将凭据存储在磁盘上永不过期,但它们使用存储HTTPS证书和Safari自动填充。如果您使用的是Windows,可以安装一个名为“Git”的助手Windows凭据管理器。“这类似于“osxkeychain”上面描述的助手,但使用Windows凭据存储控制敏感信息。可以在https://github.com/Microsoft/Git-Credential-Manager-for-Windows.您可以通过设置Git配置来选择以下方法之一值:

git config --global credential.helper cache

git config --global credential.helper store

从7.14 Git工具-凭据存储