首页/开发/Git 与协作速查/git config 作用域与优先级
Git 基础与命令88 条

git config 作用域与优先级

理解三级配置的覆盖关系:local 覆盖 global、global 覆盖 system;同名键按就近原则生效,排查配置问题时先确认读取来源。

Git 与协作速查开发更新于 2026-10-13

配置作用域是什么

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 配置写在用户目录下,服务器多账号共用时容易互相覆盖,服务账号更适合使用仓库级配置。

易错点

  • --global 写在用户目录,服务器多账号共用时容易互相覆盖,服务账号建议用仓库级配置
  • 环境变量(如 GIT_AUTHOR_NAME)会临时覆盖配置文件,排查时别只看配置文件
  • 同一键在多处重复设置会让人误判生效值,用 --show-origin 逐条确认来源
  • 在仓库里改了配置却以为影响了全局,实际只对当前仓库生效,换目录就恢复原样

数据来源与参考

  • Git 官方文档:git-config(--system/--global/--local)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌