本文梳理 Git 配置的优先级规则、.deploy_git 配置不继承这个常见坑,以及 hexo d 报 Author identity unknown 的两种解决办法。

1. Git 配置优先级(由高到低)

  1. 临时环境变量 GIT_AUTHOR_NAME / GIT_AUTHOR_EMAIL(最高)
  2. git config --local【当前仓库独立配置】保存在项目 .git/config
  3. git config --global【当前用户全局配置】
  4. git config --system【整机系统配置】

规则:同一仓库内 local > global,全局配置不会覆盖本地仓库配置。


2. 重点大坑:hexo-deployer-git 的 .deploy_git

  1. .deploy_git 是插件自动创建的独立临时 Git 仓库
  2. ❗ 无法继承上层源码仓库的 --local 配置
  3. 仅能读取电脑 global 全局 Git 配置
  4. 每次执行 hexo d 会自动删除重建,不要手动进去设置 git config,配置会丢失

【现象】:项目明明配置了 --local user.name/email,运行 hexo d 依然提示:

Author identity unknown 缺少用户身份

3. Git 提交署名 与 代码平台权限区分

  1. user.name / user.email:提交记录署名文本,仅展示,和登录账号无关
    • ✅ 同一套署名,可以同时推送 GitHub、Gitee
  2. SSH 密钥 / Token:负责仓库推送权限,GitHub 与 Gitee 密钥互相不通用
  3. 想要 GitHub 贡献统计生效:邮箱必须是 GitHub 账号绑定邮箱;Gitee 无强制要求

4. 相关命令

4.1 查看配置

git config --list                 # 查看最终生效全部配置
git config --local --list # 查看当前项目独立配置
git config --global --list # 查看全局配置(注意是 --list,不要写成 list)

4.2 设置配置

# 当前项目独立配置(仅 E:\zzcblog-source 生效)
git config --local user.name "zzc-blog"
git config --local user.email "2542434555@qq.com"

# 全局配置(本机所有仓库通用,推荐解决hexo部署报错)
git config --global user.name "zzc-blog"
git config --global user.email "2542434555@qq.com"

# 删除项目本地配置
git config --local --unset user.name
git config --local --unset user.email

5. 两种解决 hexo d 身份报错方案

方案 A:设置 Git 全局配置(一劳永逸,推荐)

git config --global user.name "zzc-blog"
git config --global user.email "2542434555@qq.com"

设置完成后 .deploy_git 自动读取身份信息,不需要额外脚本代码。

方案 B:BAT 脚本注入临时环境变量(不修改本机任何持久 Git 配置)

:: 仅当前脚本运行生效,窗口关闭自动失效
set GIT_AUTHOR_NAME=zzc-blog
set GIT_AUTHOR_EMAIL=2542434555@qq.com
set GIT_COMMITTER_NAME=zzc-blog
set GIT_COMMITTER_EMAIL=2542434555@qq.com

完整的 Windows 部署脚本(集成上述环境变量)见《Hexo 博客部署运维笔记》第二章。