git config 的详细操作
git config 完整详细操作
git config 用来配置 Git 的各项参数,分为三个作用域,优先级:本地 > 全局 > 系统。
| 作用域 | 参数 | 配置文件位置 | 说明 |
|---|---|---|---|
| 系统级 | --system |
Linux:/etc/gitconfig;Windows:Git安装目录/etc/gitconfig |
本机所有用户,需要管理员权限 |
| 全局(用户级) | --global |
Linux:~/.gitconfig;Windows:C:\Users\用户名\.gitconfig |
当前用户所有仓库,最常用 |
| 本地(仓库级) | --local |
仓库目录下 .git/config |
仅当前这个git仓库,默认不加参数就是--local |
优先级:本地 > 全局 > 系统,同名配置本地会覆盖全局。
一、查看配置
1. 查看全部配置
# 查看所有合并后的配置(最终生效)
git config --list
git config -l
# 查看系统配置
git config --system --list
# 查看全局配置
git config --global --list
# 查看当前仓库本地配置
git config --local --list
2. 查看单个配置项
git config --global user.name
git config user.email
3. 查看配置文件原始内容
# 直接打开全局配置文件编辑
git config --global --edit
# 编辑本地仓库配置
git config --local --edit
二、设置配置(set)
1. 最基础:用户名邮箱(提交身份)
全局:当前电脑所有仓库共用身份
git config --global user.name "张三"
git config --global user.email "zhangsan@shturl."
本地:仅当前仓库,适合多账号(公司/个人)
git config --local user.name "公司账号名"
git config --local user.email "work@company.com"
2. 设置编辑器
# 全局设置vscode为git默认编辑器
git config --global core.editor "code --wait"
# windows notepad++
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
3. 换行符配置(Windows必看)
# windows:提交转LF,检出转CRLF(默认)
git config --global core.autocrlf true
# mac/linux:只检出不转换
git config --global core.autocrlf input
# 关闭自动转换(不推荐)
git config --global core.autocrlf false
4. 别名 alias(简化命令)
# 示例:git st 代替 git status
git config --global alias.st status
# git ci = git commit
git config --global alias.ci commit
# git br = git branch
git config --global alias.br branch
# git lg 漂亮日志
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
使用:直接 git lg
5. 其他高频配置
# 禁止git自动合并冲突
git config --global merge.conflictstyle diff3
# 设置默认pull策略 rebase(推荐,减少多余merge提交)
git config --global pull.rebase true
# 设置默认分支名,git init新建仓库默认main而不是master
git config --global init.defaultBranch main
# 缓存https密码凭证(记住账号密码)
git config --global credential.helper store
# windows/mac 使用系统密钥链
git config --global credential.helper manager-core
三、删除配置 unset
语法:git config [--global/--local] --unset 配置名
# 删除全局用户名
git config --global --unset user.name
# 删除本地仓库email
git config --local --unset user.email
# 删除别名
git config --global --unset alias.lg
如果同一个key有多条值,会删第一条;多条删除加
--unset-all
git config --global --unset-all remote.origin.fetch
四、增删多值配置(add / get-all)
有些配置可以有多个值
# 添加多条值
git config --global --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
# 获取该key全部值
git config --global --get-all remote.origin.fetch
五、实战:多git账号场景(最常用)
场景:电脑同时用 GitHub 和公司 GitLab,不同仓库不同邮箱用户名。
- 不设置全局 user.name / user.email
- 每个仓库进入目录单独设置 --local
# github仓库目录下执行
git config --local user.name "mygithub"
git config --local user.email "my@github.com"
# 公司gitlab仓库目录下执行
git config --local user.name "workname"
git config --local user.email "work@corp.com"
提交时优先读取本地local配置,没有才读global。
六、直接手动修改配置文件
- 全局:
~/.gitconfig(windows 用户目录下) - 本地仓库:
.git/config
直接文本编辑器修改保存,和 git config 命令等价。
七、常见坑
- 设置完用户名邮箱,旧提交不会变!只影响新的commit,历史提交需要
git filter‑repo重写。 - 执行
git config --global必须不在git仓库文件夹内也可以执行。 git config -l看到重复的配置项:文件里写了多条,用--unset-all清理。- https克隆记住密码失效:检查
credential.helper设置。
常用速查表
# 查看全部配置
git config -l
# 设置全局身份
git config --global user.name "xxx"
git config --global user.email "xxx@xx.com"
# 设置别名
git config --global alias.st status
# 删除配置
git config --global --unset user.name
# 编辑配置文件
git config --global -e
# 默认拉取使用rebase
git config --global pull.rebase true
# init默认分支main
git config --global init.defaultBranch main