尽管使用 SSH 真是相当方便,但总有些时候不得不使用 HTTP/HTTPS 之类的 git 后端——时常是由于网络环境限制导致。这时每次输入用户名密码真是相当烦心。从 1.7.9 版本开始, git 提供了 credential helper 来消除这一烦恼,且现在在各个平台下都有相当合用的 helper :

Platform independent

git 自带了两个平台无关的 helper : cache 和 store ,前者在内存中缓存凭据(可以设置有效时间),后者将凭据明文储存在硬盘上,除非文件系统有启用加密,否则不推荐使用。简单提一下前者的使用方式:

1
2
git config --global credential.helper cache
git config --global credential.helper "cache --timeout=3600"

以下平台相关的 helper 推荐使用 git 1.8.3 以上版本!

Linux (GNOME)

如果是 GNOME 用户,且安装了 GNOME Keyring 的话(正常情况下都随 GNOME 套件一起安装了),则可以使用它作为凭据储存(吐个槽: svn 很早就整合 GNOME Keyring 支持了)。 GNOME Keyring 是使用你的登录密码加密储存的,相对还是比较安全的( GNOME 下 SSH 私钥解密密码也一般是这么存储,来使得登录后即可使用)。

有个尴尬的地方是,这个 helper 必须在本机编译以后才能用,而且有可能在 GNOME Keyring 更新后需要重新编译。

Ubuntu/Debian 用户需要先安装一下所需的头文件,然后再编译:

1
2
3
4
sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

Archlinux 直接编译即可( libgnome-keyring 包已经带了头文件):

1
2
3
cd /usr/share/git/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/git/credential/gnome-keyring/git-credential-gnome-keyring

注意两个发行版的路径有细微不同。其他发行版类比即可。

Mac OSX

根据 Github 的建议, Mac OSX 下使用 homebrew 安装的 git 可以直接使用系统原生的 keychain :

1
git config --global credential.helper osxkeychain

如果尚未安装 osxkeychain helper ,可以参照 Github 那篇帮助自己安装。

Windows

Windows 下有这么一个东西: git-credential-winstore 。有需要的参照着文档自己试试看吧。另外, Github 的 Windows 客户端也提供了这个功能。