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 命令参数详解。