1、概述
如果你使用GIT的SSH 方式连接远端,并且设置了一个没有口令的秘钥,这样就可以砸不输入用户名和密码的情况下安全地传输数据。然而,这对 HTTP 协议来说是不可能的 ---- 每一个连接都是需要用户名和密码的。但是这样使用就比较麻烦,而 GIT 提供了一个凭证系统来处理这个事情。
2、GIT 提供的凭证系统
GIT 提供的凭证系统,会有四种模式,分别是默认模式、cache(缓存)、store(磁盘存储)、及keychain(钥匙串)。
默认模式:所有的都不缓存,每一次都会询问你的用户名和密码。
cache:会把凭证存放在内存中一段时间。密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
store:会将凭证用明文的形式存放在磁盘中,并且永不过期(除非你修改了你在Git服务器上的密码)。缺点就是密码是明文保存的。
keychain:它会将凭证缓存到你系统用户的钥匙串中,跟store的区别是它会对密码进行加密。在Mac 下,是"osxkeychain" 模式,在 windows 下,是"winsotre" 模式。
我们可以设置 GIT 的配置来选择上述一种方式
git config --global credential.helper cache
其中的一些模式可接受一些选项。如"store" 模式可接受一个 --file
GIT 允许配置多个模式。当查找特定服务器的凭证时,GIT会按顺序查询,并且在找到第一个回答时停止查询。当保存凭证时,GIT会将用户名和密码发送给 所有 配置里表中的模式工具,它们会按自己的方式处理用户名和密码。如果你在闪存上有一个凭证文件,但又希望在该闪存被拔出的情况下使用内存缓存来保存用户名密码,.gitconfig 配置文件如下:
[credential]helper = store --file /mnt/thumbdrive/.git-credentialshelper = cache --timeout 30000
查看可用命令
git config credential.helper
3、修改用户名和密码
能修改密码的只有 store 和 keychain 模式。对于 store 我们找到它的文件打开进行修改就好了,这里主要说一下 keychain 模式。
对于我们输入的用户名和邮箱账号,都存储在 .gitconfig 文件中,我们很简单的就能找到(C:\用户\username.gitconfig)。
但对于密码就有点麻烦,其实找到系统的钥匙串凭证的地方就可以了。
对于windows,其凭证在 “控制面板->凭证管理器->Windows凭证”下,找到相应的git配置就可以了。
对于mac,我估计也是一样的,但是我没有苹果本,没法验证了。
感谢大家,我是假装很努力的YoungYangD(小羊)。
参考资料:GIT官网文档