File rusak ketika mendorong ke Git repo di BitBucket

1

Ini sudah terjadi dua kali. Pertama kali ke 4 atau 5 file. Kedua kalinya hanya satu, tetapi saya hanya mendorong satu pada saat itu. Saya menggunakan Visual Studio 2013 untuk mengedit skrip PowerShell. Saya tidak tahu apakah ini relevan karena saya pikir itu hanya file UTF-8 ketika Git berurusan dengan mereka. Saya tidak yakin apakah itu pada saat melakukan atau mendorong tetapi file saya semakin kacau. Contoh beberapa baris pertama saat bersih:

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

Saya mendorong itu di tempat kerja dan ketika saya sampai di rumah dan menariknya, saya mendapatkannya: http://pastebin.com/EgVzZZHs

File baru penuh ketika saya berpikir adalah karakter Cina. Saya harus menggunakan pastebin karena superuser tidak mengizinkan karakter itu. Menurut beberapa analisis file, aslinya adalah UTF-8 sedangkan file baru adalah UTF-16 Big Endian. File tersebut terlihat berantakan di Notepad, SciTe, Visual Studio, WinMerge, dan alat-alat di Tortoise Git. Saya curiga (berdasarkan ingatan saya tentang terakhir kali ini terjadi) tetapi tidak dapat memverifikasi saat ini, bahwa file pada disk saya di tempat kerja akan baik-baik saja. Saya tidak tahu apakah indeks Git akan kacau, tapi saya pikir jika saya tarik, file yang baik akan diganti dengan file yang buruk. Kedua klien adalah Windows 7. Repo jarak jauh ada di BitBucket. Ini baru sekitar satu minggu. Adakah yang tahu apa yang terjadi dan / atau bagaimana cara mencegahnya? Saya sangat kecewa tentang hal ini. Terimakasih banyak!

Programmer Paul
sumber

Jawaban:

1

Saya menyadari ini adalah pertanyaan lama, tetapi ini muncul pertama kali di Google untuk saya.

Anda benar bahwa masalahnya adalah bahwa penyandian file adalah sesuatu selain UTF-8. Namun saya pikir saklar pengkodean terjadi sebelum Anda mendorong ke Bitbucket. Anda dapat memperbaiki ini dengan Sublime Text atau Notepad ++ dengan mudah, jika Anda memiliki salinan file yang tidak rusak. Cukup buka file yang menyinggung di Sublime Text, rekatkan kode yang benar dan kemudian gunakan perintah File-> Save With Encoding-> UTF-8. Kemudian dorong kembali ke Bitbucket. Saya juga memperhatikan bahwa file ditampilkan dengan benar pada antarmuka Bitbucket meskipun itu akan kacau setelah ditarik. Jadi, Anda mungkin dapat menyalin kode langsung dari antarmuka 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

John Starr Dewar
sumber
Untungnya, masalah ini menjadi sangat langka bagi saya. Saya pikir file .gitattributes dan .git \ config saya berfungsi saat ini. * -textdan [core] autocrlf = falsemasing-masing Masalahnya tampaknya git memodifikasi akhir baris file ketika saya tidak ingin atau membutuhkannya. Saya belum melihatnya dalam beberapa saat.
Programmer Paul