如何在OS X上的Git文件名中处理亚洲字符
我使用的是US-English OS X 10.6.4,并尝试在Git存储库中存储具有亚洲字符的文件名。
好吧,让我们在Git工作树中创build一个这样的文件:
$ 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命令来获取特定的文件名。 我没有select发现与此文件完全匹配的通配符模式,但没有其他人。
这是一个已知的Git错误,或者我没有正确使用Git?
Git默认引用非ASCII字符,而不是亚洲字符。 有一个选项来禁用此引用行为。
您可以使用以下命令来禁用它:
git config --global core.quotepath false
或者,也可以通过将以下代码片段添加到您的gitconfiguration文件(通常为$ HOME / .gitconfig)
[core] quotepath = false
在此之后,git应该显示您的文件名完全一样。
至于你的其他问题,git没有添加一个带有亚洲字符的文件,我只能猜测它与git使用的编码不同于你的terminal使用的编码。 我希望别人可以跳进来解释一下。
您只需要使用定制的存储库类(确保每个方法都标记为虚拟)来实现IGit接口,然后将此接口实现转换为GitX模块化内聚堆。 我以前做过这个,解决了我的问题。