相信大家肯定都遇到过这样的问题,就是通过Git命令提交代码的时候,每次都会提示输入用户名密码,尤其是在一些隔一段时间就需要变更用户名密码的强制要求的情况下,这种操作非常影响人的心情,搞人的心态,那么如何解决这种问题呢?下面我们就来一起看看。
使用SSH密钥认证
这是一种比较安全且很多开发人员都比较推荐的方式,因为它确保了对已经生成的SSH秘钥对的匹配,并且将你生成的公钥添加到了Git托管的服务提供商的账户中,这样,当你推送Git代码的时候就会使用SSH秘钥进行身份的验证,这种情况下,是不需要通过用户名密码来进行验证的,所以说用户名密码的变化一般不会受到影响。
使用凭据缓存
一般情况下我们都是使用这种方式,在自己本地计算机上默认就会设置一个Git的缓存凭据,然后让Git在一段时间内记住你的用户名和密码,类似于一个Token缓存,然后我们可以通过如下的操作来启动凭据。
git config --global credential.helper cache
默认情况下,这个凭据会缓存15分钟,当然我们也可以通过--timeout参数来设置超时时间如下所示。
git config --global credential.helper 'cache --timeout=3600'
使用凭据存储
上面我们提到的是凭据的缓存操作,当然我们也可以将凭据永久的存储到磁盘上,但是这种前提是这个凭据在短时间内不会发生变化,这种存储就是持久化的,而不是在内存中的。这种方式是一种比较不太安全的方式,因为将凭据保存到磁盘上,有可能会导致凭据的泄露。如下所示
git config --global credential.helper store
通过这种方式可以将凭据存储在~/.git-credentials这个文件中。这样下次再使用的时候这个凭据就会直接从磁盘上存储的凭据中获取。
如何清除凭据
如果我们在使用的时候启动了Git的凭据缓存操作,那么如果想要更新已经修改的凭据,也就是说当你的用户名密码发生变化的时候你需要将现有的缓存进行清除去更新新的缓存取存储新的用户名和密码。如下所示。
git credential-cache exit
当然这里需要注意,执行这个命令的时候有可能不会成功,因为没有相关的命令支持。当然在有些场景下这个命令是可以执行成功的。如果执行成功之后,我们就可以根据提示继续去更新存储凭证操作那么不成功的情况下该如何是好呢?
那就要重复去执行我们上面提到的凭据助手的操作了。
首先我们需要进入到git bash的目录中,然后输入如下的内容
git config credential.helper store
这里需要注意上面的这个操作是针对具体操作的项目来讲的,而如果你想要去修改全局的配置那么这个时候需要执行如下的命令。
git config --global credential.helper store
这个命令就会在你本地生成一个文本文件来记录你的账号和密码的操作,执行完上面的操作之后,会发现还是会提示让你去输入账号密码的,这种情况是针对单个项目的,当你输入完一次之后下次就不需要再输入了,但是你想让所有的项目都有这样的效果的话就需要执行如下的操作。
进入到全局的Git Bash中然后执行如下的操作。这种情况下也就是说,你如果不小心设置了一个全局的操作,你想要删除并且单独设置某个项目的时候就可以使用这种操作。
//删除 store 配置
git config --global --unset credential.helper store
//添加 store 配置
git config credential.helper store
如果想要让全局都使用这个操作只需要执行下面这个操作就可以了
git config --global credential.helper store
这样执行完成之后,就可以将配置设置到全局了,但是需要注意的是,设置这个操作的时候最好是能在Git Bash中进行这样可以防止你把你当前项目的相关配置给修改掉。
当然你也可以使用Manager的方式来进行存储,如下所示
//删除 manager配置
git config --global --unset credential.helper manager
//添加manager配置
git config --global credential.helper manager
可以将Manager设置到全局来使用。
总结
完成上面的操作之后,你就可以肆无忌惮的去提交代码而不怕再次输入密码了,当然在密码或者是用户名发生变化的时候,你也需要重新去卸载Git凭证重新进行加载操作