2016-12-15 7 views
1

У меня есть несколько репозиториев git, которые все utf-8 закодированы и отображают умлауты правильно. Я хочу, чтобы они были объединены в одно репо (каждое оригинальное репо - это единственная ветвь в новой). Моя система настроена на использование utf-8 в качестве кодировки git по умолчанию. я выполнить следующие шаги:git fetch changes german umlauts

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

Я использую окна 10 и работаю без редактора, но только в командной строке git. Фальшивая кодировка появляется только в сообщении фиксации, все остальные данные и метаданные являются точными, насколько я могу видеть. Если я использую git show в исходном репо, он правильно отображает умлауты, если я использую ту же команду в извлеченном репо, в ней есть загадочные знаки. – MxNbrt

+0

Я не использую Windows, поэтому я не могу помочь, но это, безусловно, некоторые настройки, которые Windows почему-то не понимают. Необработанные данные в сообщении commit буквально * не могут быть изменены * когда-либо: это изменило бы хеш фиксации, так что это уже не то же самое. Кто-то, более знакомый с Windows 10, вероятно, может определить проблему. – torek

ответ

0

На первом я попытался изменить кодовые мое окно командной строки, выполнив chcp 65001 , Поскольку это не сработало, я попытался установить язык os для программ, которые не поддерживают unicode для utf-8, но это тоже не сработало.

После долгого поиска я обнаружил, что проблема была в исходном репозитории, где git config --list показал, что i18n.commitencoding установлен на некоторые окна кодирования. После переключения на utf-8 все работает отлично.