20210714更新
对git终端的username和email设置与git认证无关这一问题做进一步的解释如下:
一般而言,所有的git托管平台都有两种登录认证和鉴权方式——https和ssh
- https需要通过项目所在托管平台(如github.com)的账号和密码来认证和鉴权账户,例如账密认证鉴权github.com的注册账户、账密认证鉴权公司内网git.enterprise.com的注册账户等
- ssh通过公私密钥验证账户。有托管平台上相应仓库权限的账户U先通过账号密码方式登入git托管平台,然后将生成的rsa公私密钥中的公钥在git托管平台上与自己的账号绑定,而终端持有rsa私钥,就实现了账户U在该终端的免密登陆。如果我们将这个rsa私钥放到另一台终端上,那么另一台终端也可以实现账户U的免密登陆
可以看到,不管是哪种认证方式,都是基于git托管平台的平台账户,而不是git终端的username和email设置。git终端关于username和email设置的唯一用处就在于,在后续的commit等操作记录身份
安装了git之后,我容易忘记配置git config,总是等到首次commit的时候git提示Please tell me who you are.才记起来没有配置user.name和user.email。而user.name和user.email是git config的一部分
git config
git拥有3个配置文件,按优先级由高到低排序为:
--local 仓库级,优先级最高,只对当前仓库起作用。local config文件的路径为当前仓库下.git/config,可直接打开该文件或使用git config --local -l命令查看local的配置信息
--global 全局级(称作用户级更贴切),优先级次之,只对登录操作系统的当前用户起作用。在Windows下,global config文件的路径是C:\Users\User\.gitconfig,可直接打开该文件或使用git config --global -l命令查看global的配置信息
- 该配置文件的存在使得单个用户User想使用同一个身份对多个git仓库进行修改时,无需配置多个仓库级config文件,而只需配置一份自己的global级(用户级)的config文件
- 而当另一个用户登录系统时,又会使用他自己的用户级config文件进行git操作,从而实现不同用户间身份的隔离
--system 系统级,优先级最低,适用范围广,适用于所有的用户、所有的仓库。在Windows下,系统级config文件的路径为git安装目录\etc\gitconfig,可以被所有用户、所有仓库使用,同样可以直接打开或git config --system -l命令查看
git优先使用高级别的config,当高级别config无法满足需求时,才向下使用
如果命令git config后不指定级别,将显示三个配置文件中目标结果的总和,如git config -l 会显示最终三个配置文件的所有配置信息总和
git配置用户名和邮箱
用户名和邮箱是本地git客户端的2个变量
git 是源管理系统,git的每次commit需要使用用户名和对应的邮箱地址来明确操作产生的源头
git 配置邮箱时不会对邮箱的合法性进行检查,但建议写一个能用的。。。
一般来说,配置仓库级的用户名和邮箱没有必要。实际使用中,同一个系统用户一般都使用同一个git配置,因此一般针对用户级config做配置
用户名和邮箱的配置命令如下:
1 git config --global user.name "yourname"
2 git config --global user.email "youremail@email.com"