解决 git pull 每次都需要用户名和密码的问题

最近从公司的 Gitlab 服务器拉代码 git pull 的时候,总是需要输入用户名和密码,非常烦人。所以想着一劳永逸的解决这个问题。

我们公司拉代码的方式是通过 https 的方式拉代码,而我在 Github 上拉代码的方式是通过 ssh。

**ssh 是可以通过配置公私钥的方式来解决频繁输入用户名密码的问题。但是 https 的这种远程仓库的配置,怎么避免每次拉代码都要输入密码?**这个倒是么有研究过。上网搜了一下,顺带把解决的方案贴到这里。

大致思路如下

  1. 执行 git config credential.helper store 命令。这个命令用于配置 Git,将你的凭证(用户名和密码)以明文形式存储在本地系统上。

  2. 运行该命令后,git 会创建或更新你的主目录(通常是 ~/.gitconfig)下的 .gitconfig 文件。它会添加以下内容:

    [credential]
        helper = store
    

    这个配置告诉 Git 使用 store 凭证助手,将你的凭证以明文形式存储在一个文件中。默认情况下,凭证会存储在主目录下的 .git-credentials (即 ~/.git-credentials)文件中。

    但此时 .git-credentials 文件并没有被创建,需要执行 git pull 命令触发创建。

  3. 此时再执行 git pull,输入用户名和密码后,会看到 .git-credentials 会被创建,文件里面的内容是 http://{username}:{password}@gitlab.xxx.com (opens new window)。这里的 usernamepassword 都是明文。

  4. 之后每次再重新拉代码(git pull)的时候,就不必重新输入密码了。

问题基本解决,但是有个风险是,你的密码是明文储存的,如果后续想要删除已经存储的凭证怎么办?可以直接删除 .git-credentials 文件。然后再运行 git config --unset credential.helper 避免之后输入密码再次生成 .git-credentials 文件。

参考地址:

  1. How can I save username and password in Git? (opens new window)

关注我的微信公众号,我在上面会分享我的日常所思所想。