Что может заставить git возиться с кодировкой символов?
править: git не возится с кодировкой символов. Это все еще здесь, чтобы поделиться знанием и избежать других, делающих ту же ошибку.
Контекст : Мое предприятие использует репозиторий svn. Я использую git-svn в качестве клиента для взаимодействия с этим репозиторием. Все текстовые файлы в проекте кодируются (и должны быть) с помощью кодировки windows default encoding (cp-....). Я использую git-расширения, а иногда и командную строку для пилотирования git.
Что я сделал : В течение последних 3 дней я работал над новой функцией и сделал несколько локальных коммитов. Наконец, я сжал все эти коммиты в один, используя интерактивную ребазу, затем я использовал git svn dcommit, чтобы протолкнуть все в хранилище svn в одном коммите.
Что произошло потом: коллега сказал мне, что все акценты были перепутаны в файлах, которые я изменил, и в новых файлах после моей фиксации. Я уже отправил текстовые файлы с акцентами в тот же репозиторий с моей установкой git + svn раньше, и это первый раз, когда я сталкиваюсь с этой проблемой.
Мое исследование : я сделал следующие вещи, чтобы исследовать: открыл файлы с notepad++ и попробовал самые современные кодировки (включая Windows default и UTF-8), чтобы просмотреть их: ни один из них не мог отображать акценты должным образом, и различные акценты всегда отображаются одной и той же последовательностью странных символов.
Временное решение : я быстро создал revert commit с расширением git и "dcommited" его.
Вопрос : мой корпоративный репозиторий svn в порядке, но теперь у меня есть две следующие проблемы для решения:
- понять, что произошло с персонажами с акцентами
- извлеките мою работу из истории SVN и зафиксируйте ее надлежащим образом (если возможно, не просматривая вручную все символы с акцентами)
Может ли кто-нибудь дать некоторые подсказки (я довольно новичок в git) ?
1 ответ:
А теперь давайте откроем болезненную правду (болезненную для моего эго, а не для пользователей git): это я напутал с акцентом,а не мерзавец.
Я мог бы просто убрать вопрос, который давайте ошибочно думать, что git может испортить акценты, но, учитывая количество апвотов, я думаю, что многие люди делают ту же ошибку, что и я, поэтому я решил ответить на свой собственный вопрос, чтобы установить истину, и, возможно, помочь людям в том же случае:
- Git не трогает к символам, отличным от разрывов строк.
- я сломал акцентыперед совершением, и я не заметил этого, потому что я не уделял достаточно внимания. Для этого я отредактировал некоторые файлы с помощью eclipse. Eclipse не распознал кодировку, и все акценты были заменены странной последовательностью байтов на save. Это все.
Еще раз спасибоДмитрию Павленко за то, что он дал мне указания, как исследовать эту проблему.
+1 к "git reflog"
Счастливая фиксация акцента;=)
Comments