git-credential-manager 上手
Last updated on 2022-03-16, Wed, 03:19 PM
动机
自己有使用多个 git 平台,并且在其中的一个持有不止一个身份。
SSH 是不可能的,这辈子都不会用的。
于是对我而言,凭证管理成为一大难题:使用 git 自带的明文 credential store 显然过于危险,但是又不想每次都输入密码。
然后碰巧在 Haruhi 的 某次吐槽 的评论区中看到了一丝希望。
git-credential-manager
正是我想要的。
安装
请参考 这里 。
配置
对于 gitea, 建议事先指定鉴权来源为 generic
.
Windows
使用 DPAPI 来加密凭证。[1]
如果不需要全局使用,请将家目录里面的 credential.helper
恢复原状,以免带来不便。
Linux
使用 GPG / pass
加密。[2]
freedesktop.org 的 API 很容易因为 keyring 配合不到位而爆炸,然后丢失凭据。
建议单独生成一个 key 用来加密。
初始化 pass
. 填入 Key ID 时不要有空格。
随后修改 .gitconfig
.
多用户
在 remote url 的 hostname 前面添加 username 即可。[3]
如:
限制 .gitconfig
作用范围
这里需要用到 git 的 conditional includes 特性。
在你的 $HOME
/ %HOME%
目录下找到 .gitconfig
文件,添加
末尾添加 /
可以当通配符,自动附加 **
, 可以对下面的所有子目录生效。
前缀 ~/
相对于家目录,而 ./
则相对于这个 .gitconfig
所在的目录。
同时,你可以嵌套多个 .gitconfig
文件。
对于重复的配置,文件层级越靠近实际 git repository 中的 .git/config
则优先级越高。
这样一来,就可以把你的 credential store 设置限定在某些特定的目录中。
大功告成,一劳永逸。
Ref
- https://github.com/GitCredentialManager/git-credential-manager/blob/main/docs/credstores.md#windows-credential-manager ↩
- https://github.com/GitCredentialManager/git-credential-manager/blob/main/docs/credstores.md#gpgpass-compatible-files ↩
- https://github.com/GitCredentialManager/git-credential-manager/blob/main/docs/multiple-users.md ↩