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

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


当前回答

您可以使用git凭据存储将未加密的密码存储在磁盘上,仅受文件系统权限的保护。

实例

git config credential.helper store
git push http://example.com/repo.git

Username: <type your username>
Password: <type your password>

[Several days later]

git push http://example.com/repo.git

[Your credentials are used automatically]

您可以检查存储在文件~/.git凭据中的凭据。

有关更多信息,请访问git credential store-Helper将凭据存储在磁盘上。

其他回答

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

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

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

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

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

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

如果您正在Windows上使用Git凭据管理器。。。

git-config-l应该显示:

credential.helper=manager

但是,如果没有提示您输入凭据,请执行以下步骤:

从“开始”菜单打开“控制面板”选择用户帐户在左侧菜单中选择管理凭据删除与Git或GitHub相关的任何凭据

如果您有代理并且Git服务器位于内部网络上,请确保您没有设置HTTP_PROXY、HTTPS_PROXY、NO_PROXY环境变量。

您还可以使用gitgui测试Git fetch/push/pull,gitgui链接到C:\Users\<username>\AppData\Local\Programs\Git\mingw64\libexec\Git-core中的凭据管理器二进制文件

我认为缓存凭据比永久存储更安全:

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

现在,您可以输入用户名和密码(git pull或…),并在接下来的三个小时内继续使用git。

它很好,很安全。

超时的单位是秒(在本例中为三小时)。

查看官方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工具-凭据存储

在这种情况下,您需要git凭据助手通过以下命令行告诉git记住您的GitHub密码和用户名:

git config --global credential.helper wincred

如果您使用的是使用SSH密钥的存储库,则需要SSH密钥进行身份验证。