需设置哪些Git环境变量以等价于user.name和user.email配置?
Git环境变量替代全局配置的正确方式
1. user.name/user.email对应的角色
Git的user.name和user.email配置项是同时作为提交的author(作者)和committer(提交者)的默认值,除非你通过单独配置或环境变量分别指定两者,否则这两个身份会使用同一套信息。
2. 需要设置的环境变量
要完全等价于git config --global user.name/user.email的效果,你需要同时设置以下四个环境变量:
export GIT_AUTHOR_NAME='developer name' export GIT_AUTHOR_EMAIL='developer email' export GIT_COMMITTER_NAME='developer name' export GIT_COMMITTER_EMAIL='developer email'
只设置GIT_AUTHOR_*的话,committer信息会回退到系统默认值(比如服务器的用户名/主机名),可能导致Git操作报错,或者提交记录里的committer信息不符合预期。
3. 历史改写操作中的注意事项
在重基(rebase)、拣选(cherry-pick)、压缩(squash)或合并(merge)这类操作中:
- Git默认会保留原提交的author信息,但会将committer替换为当前执行操作的用户
- 如果未设置
GIT_COMMITTER_*变量,Git可能会因缺少提交者信息而终止操作,或者生成不符合规范的提交记录 - 同时设置四个变量后,所有操作中生成的新提交(包括改写历史时产生的新提交)的author和committer都会使用你指定的信息,和全局配置的行为完全一致,不会出现异常。
内容的提问来源于stack exchange,提问作者k0pernikus
相关产品推荐
相关产品推荐

