2016-12-15 203 views
1

我有多个git存储库,都是UTF-8编码,并正确显示元音变音。我希望他们被合并成一个单一的回购协议(每个原始回购协议都是新的单一分支)。我的系统被配置为使用utf-8作为默认的git编码。 我做以下步骤:git fetch变化德语变音符号

git init test (initializes as utf-8) 
cd test 
git remote add test_remote C:/temp/remote_repo 
git fetch --all 
git checkout -b test_local test_remote/master 

在那之后,我在当地的分支机构test_local所有提交的远程分支主。我的问题是,德语变音符号没有正确显示,但git log为ü提供了类似的功能。

我的问题是,为什么git fetch改变编码,为什么它没有正确显示在新的回购,因为它也是utf-8?

我附的如何获取远程回购和提交信息的变化,而在提交散列的示例保持相同: Git Bash Screenshot

+0

Git一般*根本不*触及你的任何数据:它都只是原始字节串。任何编码解释都取决于其他软件,例如查看提取文件的编辑器或查看提交的寻呼机。但是有一些令人讨厌的角落案例,一些操作系统坚持要搞乱路径名称。因此,指定您的操作系统和字符出现位置非常重要:提交元数据(如日志消息),文件元数据(如文件名)或存储在存储库中的文件数据。 – torek

+0

我使用的是Windows 10,没有编辑器而只是使用git命令行。错误编码仅出现在提交消息中,所有其他数据和元数据都可以看到。如果我在原始回购库中使用git show,它会正确显示变音符号,如果我在取回的回购库中使用相同的命令,则会有神秘的标志。 – MxNbrt

+0

我不使用Windows,所以我不能真正帮助,但它确实是某种设置,Windows以某种方式不理解。提交消息中的原始数据字面*不能被更改,永远不会改变提交散列,因此它不再是相同的提交。更熟悉Windows 10的人可能会指出问题所在。 – torek

回答

0

起初我试图通过执行chcp 65001改变我的窗口命令行的代码页。由于这没有奏效,我试图将不支持unicode的程序设置为utf-8的程序的os语言,但那也不起作用。

经过长时间的搜索,我发现问题出在源存储库,其中git config --list显示,i18n.commitencoding被设置为一些Windows编码。切换到utf-8后,现在一切正常。