赞
踩
通过Git进行远程访问时,默认每次都会要求输入用户名和密码。要想对密码进行保存,需要借助git的凭证系统。git支持四种形式的凭证模式:
“cache” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
“store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下。
如果你使用的是 Mac,Git 还有一种 “osxkeychain” 模式,它会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的。
如果你使用的是 Windows,你可以安装一个叫做 “Git Credential Manager for Windows” 的辅助工具。 这和上面说的 “osxkeychain” 十分类似,但是是使用 Windows Credential Store 来控制敏感信息。
凭证系统和 Git 本身是分开的;每种凭证模式都对应一个凭证辅助工具来对用户名、密码进行处理。
如果习惯使用命令行进行git操作,可以通过以下命令启用凭证存储。以下均以 store 存储方式为例进行:
1) 启用store存储:
$ git config --global credential.helper store
执行命令后在git的全局配置文件 ~/.gitconfig 中会添加如下内容。
[credential]
helper = store
2)配置后,正常情况下,我们在通过git命令进行远程操作(如git pull)时,会提示输入用户名、密码;验证成功后该凭证会自动保存到默认文件 ~/.git-credentials中。其存储格式为:
$ cat ~/.git-credentials
http://username:password@git.jd.com
3)凭证保存后,下次进行远程操作时就不会提示输入用户名、密码。
可以直接修改~/.git-credentials文件,删除不需要的凭证。也可以通过命令删除,空行代表命令结束。
$ git credential reject
protocol=http
host=git.jd.com
删除凭证后,下次登录时会重新提示输入用户名、密码。
如果你的系统中没有安装osxkeychain辅助工具,则需要先行安装。
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
如果习惯使用命令行进行git操作,可以通过以下命令启用凭证存储。以下均以 osxkeychain(钥匙串) 存储方式为例进行:
1) 启用 osxkeychain (钥匙串)存储:
$ git config --global credential.helper osxkeychain
执行命令后在git的全局配置文件 ~/.gitconfig 中会添加如下内容。
[credential]
helper = osxkeychain
2)配置后,正常情况下,我们在通过git命令进行远程操作(如git pull)时,会提示输入用户名、密码;验证成功后该凭证会保存到系统的钥匙串中。如下图:
3)凭证保存后,下次进行远程操作时就不会提示输入用户名、密码。
可以直接从钥匙串访问app选中要删除的凭证,右键删除。也可以通过命令删除,空行代表命令结束。
$ git credential reject
protocol=http
host=git.jd.com
删除凭证后,下次登录时会重新提示输入用户名、密码。
以上两个示例均采用单一凭证处理模式,其实是可以同时采用多种凭证存储模式的。
如果同时存在两种凭证存储方式
如果你在闪存上有一个凭证文件,但又希望在该闪存被拔出的情况下使用内存缓存来保存用户名密码,.gitconfig 配置文件如下:
[credential]
helper = store --file /mnt/thumbdrive/.git-credentials
helper = cache --timeout 30000
可以通过Appearance & Behavior - System Setting - Passwords 设置凭证的存储方式。默认为In native Keychain。即存储到本地钥匙串中。因此如果密码发生变化,可以从钥匙串中删除对应的记录,然后重新登录即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。