关于凭证:如何在Git中保存用户名和密码?

How to save username and password in GIT?

我想在gitextension中使用自动推拉,而不需要每次都在提示中输入我的用户和密码。

那么,我如何将我的凭证保存在Git中呢?


1
git config credential.helper store

然后

1
git pull

提供用户名和密码,稍后将记住这些详细信息。凭证存储在磁盘上的一个文件中,磁盘权限为"仅用户可读/可写",但仍为纯文本。

如果以后要更改密码

1
git pull

将失败,因为它失败了,它从~/.git-credentials文件中删除有问题的用户+密码,所以现在运行

1
git pull

提供一个新密码,它将像以前一样工作。


您可以使用git config在git中启用凭证存储。

1
git config --global credential.helper store

当运行这个命令时,当您第一次从远程存储库中拉或推时,您将被问及用户名和密码。

打开之后,对于与远程存储库的后续通信,您不必提供用户名和密码。

存储格式是以纯文本形式存储的.git-credentials文件。

此外,您还可以为git config credential.helper使用其他帮助程序,即内存缓存:

1
git config credential.helper cache <timout>

这需要一个可选的timeout parameter来决定它的执事应该运行多长时间,它的default值是900 seconds (15 minutes).值。

警告:如果使用此方法,您的Git帐户密码将以plaintext格式保存,以global .gitconfig file格式保存,例如在Linux中,它将是/home/[username]/.gitconfig格式。

如果您不希望这样做,请使用ssh key作为您的帐户。


打开凭据帮助器,以便Git将您的密码保存在内存中一段时间:

在终端中,输入以下内容:

1
2
# Set git to use the credential memory cache
git config --global credential.helper cache

默认情况下,Git会将您的密码缓存15分钟。

要更改默认密码缓存超时,请输入以下内容:

1
2
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'

来自Github帮助


您可以这样设置用户名和密码:

1
2
3
git config --global user.name"your username"

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


您可以编辑~/.gitconfig文件来存储您的凭证。

1
sudo nano ~/.gitconfig

应该已经有了

1
2
3
[user]
        email = [email protected]
        user = gitUSER

您应该在这个文件的底部添加。

1
2
[credential]
        helper = store

我推荐这个选项的原因是因为它是全局的,并且如果在任何时候您需要删除这个选项,那么您就知道该去哪里并更改它。

仅在个人计算机中使用此选项。

然后拉克隆输入您的git密码,一般情况下,密码将以~/.git-credentials格式保存。

1
https://GITUSER:[email protected]

其中domain.xxx可以是github.com bitback.org其他

参见文档

重新启动终端。


对于全局设置,打开终端(从任意位置)运行如下:

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

这样,您机器上的任何本地git repo都将使用该信息。

您可以通过执行以下操作为每个回购分别配置:

  • 打开repo文件夹中的终端。
  • 运行如下:

    1
    2
    git config user.name"your username"
    git config user.password"your password"

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


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

例子

1
2
3
4
5
6
7
8
$ 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-credentials中的凭证。

有关更多信息,请访问Git凭据存储-用于在磁盘上存储凭据的帮助程序


如果使用ssh身份验证,您将比使用用户名/密码身份验证更安全。

如果您使用的是Mac,那么ssh客户机身份验证将集成到MacOS密钥链中。创建ssh密钥后,在终端中键入:

1
ssh-add -K ~/.ssh/id_rsa

这将把ssh私钥添加到macos密钥链中。Git客户端在连接到远程服务器时将使用ssh。只要您在服务器上注册了ssh公钥,就可以了。


在这种情况下,您需要使用以下命令行让Git记住您的GitHub密码和用户名:

1
git config --global credential.helper wincred

如果您使用的是使用ssh密钥的repo,那么您需要ssh密钥进行身份验证。


只需在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文件。

注意要始终使用单引号:

1
2
git config --global user.name 'your username'
git config --global user.password 'your password'

如果使用双引号,用户名和密码可能会使用一些字符来破坏密码。