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,不同仓库不同邮箱用户名。

  1. 不设置全局 user.name / user.email
  2. 每个仓库进入目录单独设置 --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 命令等价。

七、常见坑

  1. 设置完用户名邮箱,旧提交不会变!只影响新的commit,历史提交需要 git filter‑repo 重写。
  2. 执行 git config --global 必须不在git仓库文件夹内也可以执行。
  3. git config -l 看到重复的配置项:文件里写了多条,用 --unset-all清理。
  4. 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