Git密码(登录凭证)的保存和重置 Mac

  • 1. 凭证系统
  • 2. 命令行操作 -- store模式
  • 2.1 凭证存储
  • 2.2 凭证删除
  • 3. 命令行操作 -- osxkeychain模式(Mac用户)
  • 3.1 辅助工具安装
  • 3.2 凭证存储
  • 3.3 凭证删除
  • 4. 命令行操作 -- 多模式共存情况的处理
  • 5. IDEA凭证存储的设置
  • 参考


1. 凭证系统

通过Git进行远程访问时,默认每次都会要求输入用户名和密码。要想对密码进行保存,需要借助git的凭证系统。git支持四种形式的凭证模式:

  • “cache” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
  • “store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下。
  • 如果你使用的是 Mac,Git 还有一种 “osxkeychain” 模式,它会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的。
  • 如果你使用的是 Windows,你可以安装一个叫做 “Git Credential Manager for Windows” 的辅助工具。 这和上面说的 “osxkeychain” 十分类似,但是是使用 Windows Credential Store 来控制敏感信息。

凭证系统和 Git 本身是分开的;每种凭证模式都对应一个凭证辅助工具来对用户名、密码进行处理。

2. 命令行操作 – store模式

2.1 凭证存储

如果习惯使用命令行进行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)凭证保存后,下次进行远程操作时就不会提示输入用户名、密码。

2.2 凭证删除

可以直接修改~/.git-credentials文件,删除不需要的凭证。也可以通过命令删除,空行代表命令结束。

$ git credential reject
protocol=http
host=git.jd.com

删除凭证后,下次登录时会重新提示输入用户名、密码。

3. 命令行操作 – osxkeychain模式(Mac用户)

3.1 辅助工具安装

如果你的系统中没有安装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

3.2 凭证存储

如果习惯使用命令行进行git操作,可以通过以下命令启用凭证存储。以下均以 osxkeychain(钥匙串) 存储方式为例进行:

1) 启用 osxkeychain (钥匙串)存储:

$ git config --global credential.helper osxkeychain

执行命令后在git的全局配置文件 ~/.gitconfig 中会添加如下内容。

[credential]
	helper = osxkeychain

2)配置后,正常情况下,我们在通过git命令进行远程操作(如git pull)时,会提示输入用户名、密码;验证成功后该凭证会保存到系统的钥匙串中。如下图:

mac修改gitlab帐号 mac修改git密码_mac

3)凭证保存后,下次进行远程操作时就不会提示输入用户名、密码。

3.3 凭证删除

可以直接从钥匙串访问app选中要删除的凭证,右键删除。也可以通过命令删除,空行代表命令结束。

$ git credential reject
protocol=http
host=git.jd.com

删除凭证后,下次登录时会重新提示输入用户名、密码。

4. 命令行操作 – 多模式共存情况的处理

以上两个示例均采用单一凭证处理模式,其实是可以同时采用多种凭证存储模式的。

如果同时存在两种凭证存储方式

  • 查询时会按顺序执行各凭证辅助工具进行查询,遇到第一个应答则退出查询;
  • 保存时会调用所有的凭证辅助工具,各辅助工具根据自己的逻辑处理用户名、密码。

如果你在闪存上有一个凭证文件,但又希望在该闪存被拔出的情况下使用内存缓存来保存用户名密码,.gitconfig 配置文件如下:

[credential]
    helper = store --file /mnt/thumbdrive/.git-credentials
    helper = cache --timeout 30000

5. IDEA凭证存储的设置

可以通过Appearance & Behavior - System Setting - Passwords 设置凭证的存储方式。默认为In native Keychain。即存储到本地钥匙串中。因此如果密码发生变化,可以从钥匙串中删除对应的记录,然后重新登录即可。

mac修改gitlab帐号 mac修改git密码_git_02


mac修改gitlab帐号 mac修改git密码_mac_03

参考

7.14 Git 工具 - 凭证存储macOS中保存git用户名和密码