Git 中文手册

git 中文乱码怎么解决?status、log、文件名乱码处理

2026-09-06 约 3 分钟阅读

git status 中文文件名变成 \345\234\226 乱码、log 中文提交信息乱码、diff 中文乱码?本文给出 Git 中文环境的完整配置方案,一次解决常见乱码。

场景:git status 里中文文件名变成一堆 \345\234\226 反斜杠数字,git log 的提交说明是乱码,git diff 看到乱码。这是国内开发者最常遇到的 Git 困扰,绝大多数是编码配置问题,几行命令即可解决。

问题一:中文文件名乱码(最常见)

git status 显示中文文件名变成八进制转义:

"???\346\226\207\344\273\266.txt"

解决:让 Git 不要转义文件名,直接显示中文:

git config --global core.quotepath false

改完后再 git status,中文文件名就正常显示了。这是最常用的一条修复。

问题二:git log 提交信息中文乱码

终端能正常打中文,但 log 的中文显示为乱码,可能是终端编码或 Git 输出编码不一致。依次检查:

# 1. 确认输出编码为 UTF-8
git config --global i18n.logoutputencoding utf-8

# 2. Windows 下把文件内容编码也设为 UTF-8
git config --global core.quotepath false

多数情况第一条 + 终端 UTF-8 即可解决。

问题三:Windows CMD 下乱码

Windows 自带的 CMD 默认用 GBK(代码页 936),和 Git 的 UTF-8 冲突导致乱码。两种解法:

# 方式一:切 CMD 到 UTF-8(临时)
chcp 65001

# 方式二(推荐):直接用 Git Bash / Windows Terminal / VSCode 终端
# 它们默认 UTF-8,基本不会乱码

强烈建议日常用 Git Bash 或 VSCode 内建终端,而不是 CMD,可避开大部分编码坑。

问题四:git diff 内容乱码

# 让 diff 按 UTF-8 输出
git config --global core.quotepath false

若 diff 的是旧 GBK 编码文件,需在仓库配 .gitattributes 声明编码,或统一文件为 UTF-8。

一键配置汇总

把下面几条一起执行,覆盖常见场景:

git config --global core.quotepath false
git config --global i18n.logoutputencoding utf-8
git config --global gui.encoding utf-8

常见问题

  • 改完还乱码:先确认「终端」是不是 UTF-8(Git Bash/VSCode 默认是;CMD 需 chcp 65001)。
  • 历史提交已乱码:那是在旧编码下提交的,改配置无法回头修复旧记录,需 git filter-branch--amend(仅限未推送)重写,成本高、慎做。
  • 只对某仓库生效:去掉 --global 就是在当前仓库配置。

一句话速记

git config --global core.quotepath false 治文件名乱码,配 UTF-8 终端(非 CMD)治 log/diff 乱码。

?

常见问题 FAQ

git status 显示中文文件名变成反斜杠数字乱码怎么办?
执行 git config --global core.quotepath false,让 Git 直接显示中文而不转义为八进制。这是最常见的中文乱码修复。
git log 提交信息里的中文显示乱码怎么办?
先确认终端用 UTF-8 编码(Windows 上 git bash 通常没问题)。若仍乱码,检查 git config --global i18n.logoutputencoding utf-8 及终端编码设置。
Windows CMD 里 git 中文乱码怎么处理?
cmd 默认 GBK 编码,与 Git 的 UTF-8 冲突。推荐改用 Git Bash 或 Windows Terminal,或在 cmd 里执行 chcp 65001 切到 UTF-8。
我改了配置还是乱码,可能是哪里的问题?
多数是「终端编码」问题而非 Git 配置。确保终端是 UTF-8(Git Bash / VSCode 一般默认)。若曾用旧仓库提交过 GBK 内容,历史已乱码需改提交信息才能修。