01安装 Git 后的常用配置

配置提交身份、默认分支、编辑器、换行、凭据与代理,并理解 system、global 和 local 的生效范围。

2026-08-10
GitConfigurationIdentityLine EndingsCredential
本章目录 · 12

安装 Git 后通常还需要做一次基础配置。最重要的是提交姓名和邮箱;默认分支、编辑器、换行方式与凭据管理则根据系统和工作习惯设置。配置之前先看现状,配置之后再核对结果,可以避免同一个选项在不同位置重复出现。

查看已有配置

在 PowerShell 中运行:

git config --list --show-origin --show-scope

输出中的 scope 表示配置范围,origin 表示配置来自哪个文件。常见范围有三种:

范围 命令选项 影响对象
system --system 这台电脑上的所有用户
global --global 当前用户的所有仓库
local --local 当前仓库

这里的 --system--global--localgit config 命令的选项,也常被口头称作命令参数;它们不是环境变量。PowerShell 中 $env:NAME 这种写法才是在设置环境变量。

同一个配置项可以同时出现在多个范围中。读取时,local 覆盖 global,global 覆盖 system。因此,个人通用设置通常写在 global,只有某个仓库不同的设置才写在 local。

查看单个配置项及其来源:

git config --show-origin --show-scope --get user.email

配置提交姓名和邮箱

姓名和邮箱会写入每一次 commit。它们不是 GitHub 等代码托管平台的登录账号或密码,但托管平台会根据邮箱把 commit 关联到账号。

为当前用户的所有仓库设置:

git config --global user.name "Example User"
git config --global user.email "[email protected]"

如果工作仓库与个人仓库使用不同身份,进入对应仓库后写入 local 配置:

Set-Location C:\work\project
git config --local user.name "Work User"
git config --local user.email "[email protected]"

local 配置保存在仓库的 .git/config 中,只影响这个仓库。

检查当前仓库最终采用的身份:

git config user.name
git config user.email
git var GIT_AUTHOR_IDENT

如果邮箱需要隐藏,可以使用代码托管平台提供的 noreply 邮箱。不要把访问令牌写进 user.email 或远端 URL。

设置默认分支

让新建仓库默认使用 main

git config --global init.defaultBranch main

mainoriginorigin/main 不是同一种名称:

名称 含义
main 当前本地仓库中的一个分支
origin 远端仓库在本地的简称
origin/main 最近一次 fetch 后,本地记录的远端 main 状态

早期新仓库的默认分支通常叫 master,现在许多平台和项目改用 maininit.defaultBranch 只决定以后执行 git init 时创建的初始分支名,不会重命名已有仓库,也不会强迫 clone 下来的仓库使用 maingit clone 会跟随远端仓库已经设置的默认分支。

查看当前本地分支、远端简称和远端默认分支:

git branch --show-current
git remote -v
git remote show origin

origin 只是惯用名称,并不是 Git 的保留字。git clone 通常自动使用这个名称;手动添加远端时也可以取其他名字。

已有本地仓库仍使用 master,并且已经确定要改名时:

git branch -M main
git push -u origin main

第一条命令重命名当前本地分支,第二条把 main 推送到名为 origin 的远端并建立跟踪关系。远端托管平台的默认分支还需要在仓库设置中改为 main;确认协作者和自动化任务都已切换后,再考虑删除旧的 master 分支。

设置编辑器和拉取方式

如果使用 Visual Studio Code 编辑提交信息:

git config --global core.editor "code --wait"

--wait 会让 Git 等到编辑器窗口关闭后再继续执行。也可以换成自己已经安装并能从终端启动的编辑器。

经常需要统一 commit message 格式时,还可以准备一份模板:

git config --global commit.template ~/.gitmessage

模板文件适合放标题格式、检查清单或注释提示,不要写入项目机密。没有固定格式要求时可以跳过这项配置。

拉取远端更新时,Git 可以执行 merge 或 rebase。希望 git pull 默认合并时设置:

git config --global pull.rebase false

这不是所有项目都必须设置的统一答案。团队已经规定 rebase 工作流时,应遵循仓库约定。

配置换行方式

Windows 常用 CRLF,Linux 和 macOS 常用 LF。Git 可以在工作区和仓库之间转换换行符,相关配置是 core.autocrlf

在 Windows 上,希望工作区使用 CRLF、提交到仓库时规范为 LF,可以设置:

git config --global core.autocrlf true

如果希望工作区也保持 LF,可以设置:

git config --global core.autocrlf input

完全不让 Git 根据该选项自动转换时使用:

git config --global core.autocrlf false

团队项目最好在仓库中提交 .gitattributes,直接规定不同文件使用哪种换行:

* text=auto
*.sh text eol=lf
*.ps1 text eol=crlf

.gitattributes 随仓库分发,比每位成员各自的 global 配置更可靠。查看 Git 当前识别的换行状态:

git ls-files --eol

修改换行策略后,不要直接提交突然出现的大量改动。先用 git diff 确认内容变化,再决定是否需要重新规范已有文件。

使用凭据管理器

HTTPS 远端需要保存登录凭据时,应使用系统的凭据管理器,不要把密码或访问令牌直接写入 Git 配置。

Git for Windows 通常已经配置 Git Credential Manager。检查当前设置:

git config --show-origin --get credential.helper

需要为当前用户明确启用时,可以运行:

git config --global credential.helper manager

不同 Git for Windows 版本可能显示 managermanager-core 或由安装程序写入的其他名称。已有配置能够正常认证时,不必为了统一名称而覆盖它。

SSH 远端不使用这个 HTTPS 凭据流程,而是通过 SSH key 认证。

按需配置网络代理

只有当前网络确实需要代理时才设置。HTTP 与 HTTPS 可以分别配置:

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

代理软件没有运行、端口改变或切换网络后,旧代理会导致 fetch 和 clone 失败。清除代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

检查是否仍有其他范围的代理配置:

git config --show-origin --show-scope --get-regexp "^(http|https)\..*proxy$"

代理地址、公司内网地址和私有仓库 URL 不应原样贴到公开的故障记录中。

安装程序维护的配置不必手工复制

Git for Windows 会在 system 范围写入部分平台配置,例如 HTTPS 后端、文件系统缓存、符号链接行为和系统凭据组件。这些设置与安装方式和 Git 版本有关,重新安装时通常会自动生成,不适合从另一台电脑的 system.gitconfig 整份复制。

安装并初始化 Git LFS 后,它会添加所需的 filter 配置:

git lfs install

可以检查是否安装成功:

git lfs version
git config --get-regexp "^filter\.lfs\."

filter.lfs.cleanfilter.lfs.smudgefilter.lfs.process 等配置应由 Git LFS 管理,不需要从另一台电脑的配置文件中逐行复制。

还有两类配置不应当作为“装完 Git 就设置”的通用步骤:

  • safe.directory 只在 Git 因仓库所有权而明确报错,并且已经确认该路径可信时添加;
  • http.postBuffer 不是网络问题的常规修复方法,不应仅因为 clone 或 push 失败就盲目调大。

最后核对

基础配置完成后再次运行:

git config --list --show-origin --show-scope

重点确认:

  1. user.nameuser.email 是准备写入 commit 的身份;
  2. 某个仓库若有 local 配置,它是否有意覆盖 global;
  3. core.autocrlf 与仓库的 .gitattributes 是否协调;
  4. credential.helper 是否来自正常安装的凭据管理器;
  5. 不需要代理时,配置中没有遗留的 http.proxyhttps.proxy

删除某项配置时,使用与写入时相同的范围。例如:

git config --global --unset user.email
git config --local --unset user.email

这样只移除目标配置项,不会误删整份 Git 配置文件。

完整配置文件参考

下面三份文件组成一套 Windows 环境下的参考配置。system 由 Git for Windows 和 Git LFS 安装程序维护,global 保存个人长期设置,local 则由 git initgit clonegit remote 和分支跟踪命令在具体仓库中生成。

这些文件用于理解最终结构,不应整份覆盖现有配置。姓名、邮箱和远端 URL 需要换成自己的信息;不需要的功能应直接省略。

System:整台电脑

常见位置为 Git 安装目录中的 etc/gitconfig。普通用户通常只读,不手工编辑:

[diff "astextplain"]
    textconv = astextplain

[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true

[http]
    sslBackend = schannel

[core]
    fscache = true
    symlinks = false

[credential]
    helper = manager

astextplainschannel、文件系统选项和 LFS filter 都与 Windows 安装环境有关。实际文件可能因 Git 版本、安装选项以及是否安装 Git LFS 而不同。

Global:当前用户

Windows 上通常保存在用户目录的 .gitconfig

[user]
    name = Example User
    email = [email protected]

[init]
    defaultBranch = main

[core]
    editor = code --wait
    autocrlf = true

[pull]
    rebase = false

[commit]
    template = ~/.gitmessage

如果没有准备 ~/.gitmessage,应删去 commit.template。团队使用 .gitattributes 且编辑器统一写入 LF 时,也可以根据前文说明把 core.autocrlf 改为 inputfalse

代理不是基础配置的一部分。确实需要时才在 global 中增加,并在更换网络后及时清除:

[http]
    proxy = http://127.0.0.1:7890

[https]
    proxy = http://127.0.0.1:7890

Local:当前仓库

保存在仓库的 .git/config。下面展示普通非 bare 仓库、一个名为 origin 的远端,以及本地 main 对远端 main 的跟踪关系:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true

[remote "origin"]
    url = https://example.invalid/example/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

[branch "main"]
    remote = origin
    merge = refs/heads/main

这份 local 配置通常不需要手写:

  • git init 创建 [core]
  • git clonegit remote add origin <URL> 创建 [remote "origin"]
  • git push -u origin main 或设置 upstream 后创建 [branch "main"]

如果某个仓库需要不同的提交身份,可以在 local 文件中额外出现一段 [user],它会覆盖 global 身份:

[user]
    name = Work User
    email = [email protected]

凭据、访问令牌和密码不应出现在这三份配置文件中;交给 Git Credential Manager 或 SSH key 管理。