配置作用域是什么
Git 的配置分三层:system 作用于整台机器,global 作用于当前用户,local 只作用于当前仓库。同名键按就近原则生效,local 覆盖 global,global 覆盖 system。理解这套规则,是排查「明明设置了却不生效」这类问题的关键。
为什么要有三层
分层的目的是让通用偏好与个别需求共存:换行符处理、编辑器这类个人习惯写在 global 就够用;某个项目需要特殊的提交身份或合并策略时,再写进该项目的 local,不影响其它仓库。system 层一般由管理员维护,普通用户很少改动。
基本信息
| 适用平台 | Linux / macOS / Windows(Git 2.x) |
|---|---|
| 三层范围 | system 全机器;global 当前用户;local 当前仓库 |
| 优先级 | local 大于 global,global 大于 system |
| 来源查看 | --show-origin 显示文件路径;--show-scope 显示层级 |
| 环境变量 | GIT_ 开头的变量会临时覆盖配置文件 |
| 相关文件 | 系统级配置文件、用户主目录配置、仓库内 .git/config |
典型使用场景
- 排查不生效:确认某个键的有效值究竟来自哪一层
- 项目特例:只给某个仓库设置不同的提交身份
- 团队统一:在项目里提交仓库级配置供全员对齐
- 环境隔离:CI 里用临时配置覆盖,不污染全局设置
- 清理冗余:发现同一键在多层重复设置时合并到一处
查看与编辑
查看与编辑
git config --list --local # 只看当前仓库的配置
git config --list --global # 只看用户级配置
git config --show-origin user.email # 显示这个值来自哪个文件
git config --show-scope user.email # 显示这个值属于哪一层
git config --global --edit # 直接编辑用户级配置文件
git config --local --unset core.autocrlf # 移除仓库级设置三层对照
| 层级 | 作用范围 | 配置文件位置 |
|---|---|---|
| system | 整台机器 | 系统级配置文件 |
| global | 当前用户的所有仓库 | 用户主目录下的配置文件 |
| local | 仅当前仓库 | 仓库内 .git/config |
CI 流水线里常出现「配置不生效」,多数是命令行临时配置或仓库内配置覆盖了预期值,用 --show-origin 一眼就能定位真实来源。
--global 配置写在用户目录下,服务器多账号共用时容易互相覆盖,服务账号更适合使用仓库级配置。