我想在GitExtensions、Sourcetree或任何其他GitGUI中自动使用推拉,每次都不需要在提示中输入用户名和密码。
那么我如何在Git中保存我的凭据?
我想在GitExtensions、Sourcetree或任何其他GitGUI中自动使用推拉,每次都不需要在提示中输入用户名和密码。
那么我如何在Git中保存我的凭据?
当前回答
在浏览了数十篇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”部分。
安全
请参阅备忘单的“安全”部分。
其他回答
除了编辑~/.gitconfig文件外,如果从命令行调用,还可以执行以下操作:
git config --local --edit
or
git config --global --edit
在默认文本编辑器中编辑git配置文件
您还可以使用命令行直接编辑git配置文件(无需编辑器)
git config --local user.name 'your username'
git config --local user.password 'your password'
or
git config --global user.name 'your username'
git config --global user.password 'your password'
请注意,始终使用单引号。如果您使用双引号,您的用户名和密码可能会使用一些会破坏密码的字符。
--local或--global表示为项目或OS用户保存配置参数。
查看官方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工具-凭据存储
只需将您的凭据放入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
您可以编辑~/.gitconfig文件以存储凭据:
sudo nano ~/.gitconfig
应该已经有了
[user]
email = your@email.com
user = gitUSER
您应该在该文件的底部添加以下内容。
[credential]
helper = store
我推荐这个选项的原因是因为它是全局的,如果在任何时候你需要删除这个选项,你就知道该去哪里更改它。
仅在个人计算机中使用此选项。
然后,当您拉|clone|输入Git密码时,通常,密码将以以下格式保存在~/.Git凭据中
https://gituser:gitpassword@domain.xxx
其中DOMAIN.XXX可以是github.com、bitbucket.org或其他
请参阅文档。
重新启动终端。
如果您正在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中的凭据管理器二进制文件