Die Datei ist beschädigt, wenn auf BitBucket Git Repo verwendet wird

1933
Programmer Paul

Das ist zweimal passiert. Das erste Mal zu 4 oder 5 Dateien. Das zweite Mal nur zu einem Zeitpunkt, aber ich habe zu diesem Zeitpunkt nur einen geschoben. Ich verwende Visual Studio 2013 zum Bearbeiten von PowerShell-Skripts. Ich weiß nicht, ob dies relevant ist, da ich glaube, dass es sich nur um UTF-8-Dateien handelt, wenn Git mit ihnen umgeht. Ich bin nicht sicher, ob es zum Zeitpunkt des Commit oder Push ist, aber meine Dateien werden durcheinander gebracht. Ein Beispiel für die ersten Zeilen, wenn es sauber ist:

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

Ich habe das bei der Arbeit geschoben, und als ich nach Hause kam und es zog, bekomme ich: http://pastebin.com/EgVzZZHs

Die neue Datei ist voll von chinesischen Schriftzeichen. Ich musste Pastebin verwenden, weil Superuser diese Zeichen nicht zulässt. Gemäß einiger Dateianalyse ist das Original UTF-8, während die neue Datei UTF-16 Big Endian ist. Die Datei sieht in Notepad, SciTe, Visual Studio, WinMerge und den Tools in Tortoise Git ähnlich durcheinander. Ich vermute (aufgrund meiner Erinnerung an das letzte Mal, als dies passiert ist), kann aber im Moment nicht verifizieren, dass die Datei auf meiner Festplatte bei der Arbeit in Ordnung sein wird. Ich weiß nicht, ob Gits Index durcheinander geraten wird, aber ich denke, wenn ich etwas ziehe, wird die gute Datei durch die fehlerhafte Datei ersetzt. Beide Clients sind Windows 7. Das Remote-Repo ist auf BitBucket. Es ist nur eine Woche oder so alt. Hat jemand eine Idee, was passiert und / oder wie man es verhindern kann? Ich bin total sauer darauf. Danke vielmals!

1

1 Antwort auf die Frage

1
John Starr Dewar

Mir ist klar, dass dies eine alte Frage ist, die jedoch bei Google zuerst für mich aufkam.

Sie sind richtig, dass das Problem darin besteht, dass die Dateikodierung nicht UTF-8 ist. Ich denke jedoch, dass der Codierungswechsel vor dem Umschalten auf Bitbucket stattgefunden hat. Sie können dieses Problem leicht mit Sublime Text oder Notepad ++ beheben, wenn Sie eine nicht beschädigte Kopie der Datei haben. Öffnen Sie einfach die betreffende Datei in Sublime Text, fügen Sie den richtigen Code ein und verwenden Sie dann den Befehl Datei-> Mit Encoding speichern-> UTF-8. Dann schieben Sie es zurück nach Bitbucket. Mir ist auch aufgefallen, dass die Datei auf der Bitbucket-Benutzeroberfläche korrekt angezeigt wurde, obwohl sie nach dem Ziehen beschädigt wurde. Möglicherweise können Sie den Code direkt aus der Bitbucket-Oberfläche kopieren.

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

Zum Glück ist diese Ausgabe für mich sehr selten geworden. Ich denke, meine .gitattributes- und .git \ config-Dateien sind das, was im Moment funktioniert. `* -text` und` [core] autocrlf = false` Das Problem schien wirklich die Änderung der Zeilenenden der Datei zu sein, wenn ich es nicht wollte oder brauchte. Ich habe es eine Weile nicht mehr angesehen. Programmer Paul vor 7 Jahren 0