Файл поврежден при загрузке в Git-репо на BitBucket

1809
Programmer Paul

Это случилось дважды. Первый раз на 4 или 5 файлов. Во второй раз только один, но я толкал только один в то время. Я использую Visual Studio 2013 для редактирования скриптов PowerShell. Я не знаю, относится ли это к делу, так как я думаю, что это всего лишь файлы UTF-8, когда Git работает с ними. Я не уверен, что это во время коммита или толчка, но мои файлы портятся. Пример первых нескольких строк, когда он чистый:

$Start=Get-Date $Global:Timings=@() $Global:Timings+=1 #$Global:Timings+=2 function Stamp($msg){ $Global:Timings += @ } 

Я толкнул это на работе, и когда я вернулся домой и вытащил его, я получаю: http://pastebin.com/EgVzZZHs

Новый файл полон, когда я думаю, что китайские иероглифы. Мне пришлось использовать pastebin, потому что суперпользователь не позволяет эти символы. Согласно анализу некоторых файлов, оригинал - UTF-8, а новый - UTF-16 Big Endian. Файл выглядит так же, как и в Notepad, SciTe, Visual Studio, WinMerge и в инструментах Tortoise Git. Я подозреваю (основываясь на воспоминаниях о том, как это происходило в последний раз), но в данный момент не могу проверить, что файл на моем диске на работе будет в порядке. Я не знаю, будет ли индекс Git испорчен, но я думаю, что если я потяну, хороший файл будет заменен плохим файлом. Оба клиента Windows 7. Удаленное репо находится на BitBucket. Это всего лишь неделя или около того. Кто-нибудь знает, что происходит и / или как это предотвратить? Я очень расстроен из-за этого. Большое спасибо!

1

1 ответ на вопрос

1
John Starr Dewar

Я понимаю, что это старый вопрос, но он впервые появился в Google для меня.

Вы правы в том, что проблема в том, что кодировка файла отличается от UTF-8. Однако я думаю, что переключение кодирования произошло до того, как вы перешли на Bitbucket. Вы можете легко исправить это с помощью Sublime Text или Notepad ++, если у вас есть нетленная копия файла. Просто откройте поврежденный файл в Sublime Text, вставьте правильный код и затем используйте команду File-> Save With Encoding-> UTF-8. Затем верните его обратно в Bitbucket. Я также заметил, что файл правильно отображается в интерфейсе Bitbucket, даже если после его извлечения он испортится. Таким образом, вы можете скопировать код непосредственно из интерфейса Bitbucket.

https://stackoverflow.com/questions/17515768/git-messed-up-my-files-showing-chinese-characters-in-some-places

https://stackoverflow.com/questions/21289157/set-encoding-of-file-to-utf8-with-bom-in-sublime-text-3

К счастью, этот вопрос стал очень редким для меня. Я думаю, что мои .gitattributes и .git \ config файлы работают в данный момент. `* -text` и` [core] autocrlf = false` соответственно. Проблема действительно заключалась в том, что git модифицировал окончания строк в файле, когда я не хотел или не нуждался в этом. Я не смотрел на это некоторое время. Programmer Paul 6 лет назад 0

Похожие вопросы