获取变更中的德语umlauts的git fetch操作

3

我有多个git仓库,它们都是utf-8编码的,并且正确地显示umlauts。 我想将它们合并为一个仓库(每个原始仓库在新仓库中只是一个分支)。 我的系统配置使用utf-8作为默认的git编码。 我执行以下步骤:

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

之后,我将远程分支master与所有提交合并到本地分支test_local中。我的问题是,德语umlauts未正确显示,但git log显示类似于ü的字符而不是ü。
我的问题是,为什么git fetch会改变编码,并且在新存储库中为什么不能正确显示,因为它也是utf-8?
我附上了一个示例,说明了我如何获取远程存储库并更改提交消息,而提交哈希值保持不变: Git Bash Screenshot

Git通常不会触及您的任何数据:它们都只是原始字节字符串。任何编码解释都由其他软件处理,例如查看提取文件的编辑器或查看提交的分页器。但是,某些操作系统存在一些令人讨厌的边角情况,坚持搞乱路径名。因此,重要的是指定您的操作系统以及字符出现的确切位置:在提交元数据(例如日志消息)、文件元数据(例如文件名)或存储在存储库中的文件数据中。 - torek
我使用Windows 10,不使用编辑器,只使用Git命令行工作。错误编码只出现在提交消息中,据我所见,所有其他数据和元数据都没有问题。如果我在原始存储库中使用git show,则正确显示umlauts,如果我在获取的存储库中使用相同的命令,则其中会出现加密符号。 - MxNbrt
我不使用Windows,所以无法提供真正的帮助,但肯定是某些设置,Windows无法理解。提交消息中的原始数据实际上是不能更改的,因为这将更改提交哈希,使其不再是同一提交。熟悉Windows 10的人可能可以准确定位问题。 - torek
1个回答

1

起初我尝试通过执行chcp 65001来更改我的Windows命令行的代码页。由于这并没有起作用,我尝试将不支持Unicode的程序的操作系统语言设置为UTF-8,但这也没起作用。

经过长时间的搜索,我发现问题出在源代码库中,git config --list显示i18n.commitencoding设置为某个Windows编码。将其切换为UTF-8后,一切都完美解决了。


怎么切换它呢? - Black

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接