如何在OS X上的Git中处理文件名中的亚洲字符

时间:2010-11-10 12:23:51

标签: git macos unicode non-ascii-characters

我使用的是US-English OS X 10.6.4,并尝试在Git存储库中存储名称中包含亚洲字符的文件。

好的,让我们在Git工作树中创建这样一个文件:

$ touch どうもありがとうミスターロボット.txt

Git将其显示为八进制转义的UTF-8格式:

$ git version
git version 1.7.3.1
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
nothing added to commit but untracked files present (use "git add" to track)

不幸的是,我无法将其添加到Git存储库中:

$ git add どうもありがとうミスターロボット.txt
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
nothing added to commit but untracked files present (use "git add" to track)

Git只是忽略了这个文件。

使用通配符工作:

$ git add *.txt
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
#

但我想从应用程序调用特定文件名的Git命令。我没有选择发明与此文件完全匹配的通配符模式,但没有其他人。

这是Git的已知错误还是我没有正确使用Git?

1 个答案:

答案 0 :(得分:59)

Git默认引用任何非ascii字符,而不仅仅是亚洲字符。可以选择禁用此引用行为。

您可以使用以下命令禁用它:

git config --global core.quotepath false

或者,通过将以下代码段添加到您的git配置文件(通常是$ HOME / .gitconfig)

[core]
    quotepath = false

在此之后,git应该完全按照原样显示你的文件名。

至于你的另一个问题,git没有添加带有亚洲字符的文件,我只能猜测它与git使用的编码有关,与你的终端使用的编码不一样。我希望其他人可以跳进去解释一下。