git config 是 Git 使用教程里第一个该敲的命令:它决定「你是谁」「换行怎么处理」「默认分支叫什么」「git pull 默认合并还是变基」。它不碰工作区、暂存区,只读写配置文件,但配错了后面每条命令都会受影响。

本文把 git config 的常用参数逐项列出并解说,附首次安装的最小配置、实用别名,以及排查「这个值到底从哪来」的方法。

ℹ️
关于本系列
本文是《Git 使用教程》按命令拆分的第 1 / 28 篇,全部收录在 Git 栏目。参数表列的是日常高频项,并非穷举;想看某个命令的完整参数,用 git config -h 看精简列表、git help config 看完整手册。示例以 Git 2.56.0 为准。

一、命令语法

先看语法骨架,再对照下一节的参数表。<占位> 表示必填值,实际输入时不要带尖括号;[...] 表示可选项,-- 用来分隔选项与路径。

bash语法
git config [<作用域>] <key> [<value>]      # 写入一个配置
git config [<作用域>] --list                # 列出全部生效配置
git config [<作用域>] --get  <key>          # 读取单个配置
git config [<作用域>] --unset <key>         # 删除一个配置

二、参数逐项详解

下表按用途列出 git config 的常用参数,每项都注明了「它到底改变了什么」。

参数作用
--system写系统级配置,对这台机器所有用户生效,通常需要管理员权限
--global写当前用户级配置(一般是 ~/.gitconfig),日常最常用
--local写当前仓库的 .git/config,是默认值,优先级最高
--worktree写工作树级配置,需先开启 extensions.worktreeConfig,多工作树场景才用
--file <路径> / -f直接指定一个配置文件读写,脚本和临时环境里很好用
--list / -l列出所有生效的配置项
--show-origin列出时附上「这个值来自哪个文件」,排查配置冲突的第一神器
--show-scope列出时标注作用域:system / global / local / worktree
--get <key>只读一个键;--get-all 读全部同名值,--get-regexp 按正则批量读
--unset <key>删除一个配置项;--unset-all 删除全部同名值
--add <key> <value>追加一个值而不是覆盖,用于允许多值的键
--edit / -e打开编辑器直接编辑配置文件
--type=<类型>读值时做类型校验与转换,如 bool、int、path、expiry-date
-z / --null用 NUL 分隔输出,便于脚本解析
--includes / --no-includes是否展开配置文件里的 [include] 引用,默认展开

三、常用示例

首次安装后的最小配置

bash首次安装后的最小配置
git config --global user.name "张三"
git config --global user.email "zhangsan@example.com"
git config --global init.defaultBranch main
git config --global core.autocrlf input        # Linux/macOS;Windows 建议 true
git config --global pull.rebase false          # 明确 pull 的默认行为

把高频命令存成别名

bash把高频命令存成别名
git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.last "log -1 --stat"
git config --global alias.unstage "restore --staged"
# 之后直接 git lg / git last / git unstage <file>

排查配置来源

bash排查配置来源
git config --list --show-origin --show-scope | grep user.email
git config --global --get core.autocrlf
git config --local user.email "work@example.com"   # 只给当前仓库换签名

四、注意事项

⚠️
配置优先级
同一配置项按 local > worktree > global > system 生效,同一作用域内后写的覆盖先写的。公司电脑与个人项目签名不同时,用 git config --local user.email ... 单独覆盖当前仓库即可,别去动全局配置。
最值得先配的三项: init.defaultBranch(统一初始分支名)、core.autocrlf(避免跨平台整文件 diff)、pull.ff only 或 pull.rebase(避免自动产生合并提交)。

五、小结

git config 的全部参数都围绕两件事:写哪一层(--system / --global / --local)和怎么读写(--get / --list / --unset / --add)。遇到「明明改了却没生效」,第一反应应该是 --list --show-origin,而不是反复重敲配置命令。

本系列共 28 篇,一个命令一篇,完整目录见 Git 栏目。下一篇:git init 命令参数详解。