Что может заставить 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 в порядке, но теперь у меня есть две следующие проблемы для решения:




  1. понять, что произошло с персонажами с акцентами

  2. извлеките мою работу из истории SVN и зафиксируйте ее надлежащим образом (если возможно, не просматривая вручную все символы с акцентами)


Может ли кто-нибудь дать некоторые подсказки (я довольно новичок в git) ?

684   1  

1 ответ:

А теперь давайте откроем болезненную правду (болезненную для моего эго, а не для пользователей git): это я напутал с акцентом,а не мерзавец.

Я мог бы просто убрать вопрос, который давайте ошибочно думать, что git может испортить акценты, но, учитывая количество апвотов, я думаю, что многие люди делают ту же ошибку, что и я, поэтому я решил ответить на свой собственный вопрос, чтобы установить истину, и, возможно, помочь людям в том же случае:

  1. Git не трогает к символам, отличным от разрывов строк.
  2. я сломал акцентыперед совершением, и я не заметил этого, потому что я не уделял достаточно внимания. Для этого я отредактировал некоторые файлы с помощью eclipse. Eclipse не распознал кодировку, и все акценты были заменены странной последовательностью байтов на save. Это все.

Еще раз спасибоДмитрию Павленко за то, что он дал мне указания, как исследовать эту проблему.

+1 к "git reflog"

Счастливая фиксация акцента;=)

Comments

    Ничего не найдено.