在本地计算机与GitHub(或GitLab)进行通信时,传输主要基于两种协议,HTTPS和SSH,对应的仓库地址就是HTTPS URLs和SSH URLs。
首先需要强调的是,HTTPS URLs和SSH URLs对应的是两套完全独立的权限校验方式,主要的区别就是HTTPS URLs采用账号密码进行校验,SSH URLs采用SSH秘钥对进行校验。平时使用的时候我们可以根据实际情况,选择一种即可。
HTTPS URLs
GitHub官方推荐采用HTTPS URLs的方式,因为该种方式适用面更广(即使在有防火墙或代理的情况下也同样适用),使用更方便(配置更简单)。
采用HTTPS URLs地址clone/fetch/pull/push仓库时,事先无需对本地系统进行任何配置,只需要输入GitHub的账号和密码即可。不过如果每次都要手动输入账号密码,也是一件很繁琐的事情。
好在已经有多个机制可以让操作不用这么麻烦。
在Mac系统中,在启用Keychain机制的情况下,首次输入GitHub账号密码后,认证信息就会自动保存到系统的Keychain中,下次再次访问仓库时就会自动读取Keychain中保存的认证信息。
在非Mac系统中,虽然没有Keychain机制,但是Git提供了credential helper机制,可以将账号密码以cache的形式在内存中缓存一段时间(默认15分钟),或者以文件的形式存储起来(~/.git-credentials)。当然,Mac系统如果不启用Keychain机制,也可以采用这种方式。