0%

Git中文路径转义问题

解决 Git 中文路径转义问题:让中文显示更友好

在使用 Git 管理包含中文文件名或路径的项目时,经常会遇到中文被自动转义为十六进制编码(如 \344\270\255\346\226\207.txt)的问题,导致 git statusgit log 等命令的输出难以阅读,影响操作效率。本文将详细介绍这一问题的成因及解决方案。

问题现象

当项目中存在中文文件名(如 测试文件.txt)或中文目录(如 文档/)时,执行 git status 会看到类似以下的转义输出:

Git中文路径问题

这种转义虽然不影响 Git 的功能,但会导致开发者无法直观识别文件,给 git add 等操作带来不便。

问题成因

Git 为了兼容不同操作系统和终端的字符编码,默认会对非 ASCII 字符(包括中文)进行 URL 编码转义(使用 core.quotepath 配置项控制)。该配置项的默认值为 true,即自动转义非 ASCII 路径。

解决方案:关闭路径转义

通过修改 Git 的 core.quotepath 配置,可禁用中文路径的自动转义,让中文正常显示。

1. 全局配置(推荐)

对当前用户的所有 Git 仓库生效:

1
git config --global core.quotepath false

2. 局部配置(针对单个仓库)

仅对当前仓库生效(需进入仓库目录执行):

1
git config core.quotepath false

3. 验证效果

配置后再次执行 git status,中文路径将正常显示:

1
2
3
4
5
6
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: "文档/测试文件.txt"

补充:终端编码问题

如果配置后中文仍显示乱码(而非转义),可能是终端的字符编码设置问题,可按以下方式解决:

  1. 检查终端编码:确保终端使用 UTF-8 编码(大多数现代终端默认支持,如 Windows Terminal、macOS 终端、Linux 终端)。

  2. Windows 系统特殊处理

    • 若使用 cmd 或 PowerShell,需确保编码为 UTF-8:

      1
      2
      # 在 cmd 中执行
      chcp 65001 # 65001 对应 UTF-8 编码
    • 推荐使用 Windows Terminal(默认支持 UTF-8),避免传统 cmd 的编码问题。

欢迎关注我的其它发布渠道