git config --global 配置不生效是因为 local 优先级高于 global,若仓库 .git/config 中已存在 user.name 或 user.email,则会覆盖全局设置;需用 git config --list --show-origin 定位来源,并用 git config --unset 删除本地配置。

直接配 git config --global 就行,但很多人配完发现提交记录还是错的——问题不在命令本身,而在没看清配置是否真被当前仓库采纳。
为什么 git config --global 配了却没生效
Git 配置有 local > global > system 三级优先级。如果你进过某个已有仓库,它本地的 .git/config 里可能早就有 user.name 和 user.email,那 global 的设置就完全被屏蔽了。
- 执行
git config --list --show-origin查看所有生效配置及其来源文件,一眼就能看出是哪个层级在起作用 - 如果看到某条配置来自
file:/path/to/repo/.git/config,说明这个仓库用了 local 设置,得进该目录运行git config --unset user.name和git config --unset user.email才能回退到 global - 别手动编辑
.git/config,容易格式出错;用git config命令增删最稳妥
用户名和邮箱到底写什么才靠谱
名字不是昵称,邮箱不是随便填——它们会永久写进每次 commit 对象里,且 GitHub/GitLab 等平台靠邮箱绑定贡献记录。
对比基线与当前 GitHub Actions 运行导出,在 CI 成本和交付周期激增前及时发现工作流或作业运行时性能退化。
-
user.name建议用真实姓名或公司要求的英文名(比如Zhang San),避免空格、中文、特殊符号;中文名虽能存,但某些 CI 工具或旧版 Git 可能解析异常 -
user.email必须是你在目标平台(GitHub/GitLab/Gitee)已验证过的邮箱,否则贡献图不计数;不能写xxx@localhost或未注册的临时邮箱 - 如果同时维护公司和个人项目,不要硬扛一个 global 配置,改用 local 覆盖更安全:进公司项目目录后执行
git config user.email "work@company.com"
Linux 下验证和排查的三步实操
配完别急着 commit,先确认当前环境读到的是你想要的值。
- 检查 global 是否写入成功:
git config --global user.name和git config --global user.email,应输出你设的值 - 进目标仓库,运行
git config user.name(不带--global),看输出是否一致;不一致就说明 local 层级覆盖了 - 模拟一次提交测试:
echo "test" > test.txt && git add test.txt && git commit -m "test config",然后立即执行git log -1 --pretty=format:"%an ",输出必须和你预期完全一致
最容易被忽略的一点:Git 从不校验邮箱真实性,也不联网验证。你配个 fake@domain.com 它照收不误,但推到 GitHub 后,这行提交永远算不到你的贡献里——所以配完一定要去对应平台的 Settings → Emails 页面确认该邮箱已添加并验证。

















