Thursday 14 September 2017

Gitattributes Binär Optionen


Ich arbeite an einem Code-Repository, wo alle Entwickler mit dem Repository mit Windows PC Amp Eclipse als ihre IDE zusammenarbeiten. Der Repository-Administrator hat diese. gitattributes-Datei im übergeordneten Verzeichnis mit folgendem Setup eingerichtet: Ich habe hier gelesen, dass git intern die Objektdatenbank aufbewahrt, um die Änderungen zu schreiben (zu übergeben). Gibt es diese Einstellung in. gitattributes wird den Code mit CRLF (Windows) Zeile endet und die Datei im Repository wird in CRLF gepflegt werden Aktiviert die Show White Spaces Option in Eclipse IDE ergab, dass alle Dateianlagen waren Zeilenvorschub (LF) Ohne Wagenrücklauf (CR). Könnte jemand auf die Ursache dieses Verhaltens hinweisen Auf einem anderen Repository, hat es das bedeutet, dass alle Dateien (.java. csv. sql) CRLF und andere Dateien haben würde LF line endingsnacho4d: that39s seltsam, weil git shouldn39t sogar wissen, dass Es gibt erweiterte Attribute. Wenn du es reproduzieren könntest, wäre es wert, die git Mailingliste aufzurufen. Wie ist eine gute Gewohnheit auf vger. kernel. org Listen, müssen Sie nicht abonnieren, um zu posten (die Leute halten Sie CC39ed für Antworten) und sind irgendwie angeblich nicht das ziemlich hohe Volumen der gitvger. kernel. org Liste gegeben. Ndash Jan Hudec Es bedeutet einfach, wenn git inspiziert den tatsächlichen Inhalt der Datei (es weiß nicht, dass jede gegebene Erweiterung ist keine binäre Datei - Sie können die Attribute Datei verwenden, wenn Sie es explizit sagen wollen - siehe die man-seiten). Nach der Inspektion der Dateien Inhalt hat es Zeug, das nicht in grundlegenden ascii Zeichen gesehen hat. Als UTF16 erwarte ich, dass es lustige Charaktere haben wird, also denkt es seine binäre. Es gibt Möglichkeiten, Git zu sagen, wenn Sie Internationalisierung (i18n) oder erweiterte Zeichenformate für die Datei haben. Im nicht genügend auf die genaue Methode für die Einstellung, die - müssen Sie möglicherweise RTFullM -) Edit: eine schnelle Suche von SO gefundenen can-i-make-git-erkennen-a-utf-16-Datei-als-Text, die sollte Gib dir ein paar Hinweise. Sie sind fast aber nicht ganz nicht falsch. Git hat die eigentlichen Akten überprüft und dort 39Funny39 Charaktere gesehen. Allerdings ist es nicht wichtig, dass UTF-16 binär ist. Es ist binär, weil Text als ASCII-basiert definiert ist (das ist nur das eingebaute diff gibt nutzbare Ergebnisse für) und UTF-16 ist nicht. Ja, es gibt einen Weg zu sagen, git, um spezielle diff für Muster definierte Dateien (mit. gitattributes) zu verwenden. Ndash Jan Hudec Jul 28 11 um 9:27 Ich sollte hinzufügen, dass 39funny Zeichen39 wirklich null Bytes bedeutet. Ndash Jan Hudec Jul 28 11 um 9:31 Wir sind beide richtig, aber aus verschiedenen Perspektiven. Wir beide sagen, quotGit inspiziert den Inhalt zu bestimmen, seine type. quot Wir beide sagen, dass git wissen, dass es behandelt werden sollte als UTF16 der Benutzer muss git über. gitattributes etc. ndash Philip Oakley Jul 28 11 um 9:34 Was ist Das Gegenteil von check-attr - gibt es eine set-attr Ich habe ursprünglich versehentlich eine Datei als UTF-16 gespeichert, dann begangen und gedrückt, und jetzt BitBucket sieht es als UTF-16, auch nach dem Re-Speichern als UTF-8 , Beaufsichtigt und drückt es wieder. Dies macht grundsätzlich meine Pull-Anfragen unmöglich zu lesen, weil Rezensenten müssen in jeden einzelnen Kommentar klicken, um Rezension Kommentare hinzufügen. Ndash John Zabroski Ich war mit diesem Problem, wo Git GUI und SourceTree war die Behandlung von JavaJS-Dateien als binäre und damit nicht sehen Unterschied Erstellen von Datei namens Attribute in. Gitinfo Ordner mit folgendem Inhalt das Problem gelöst Wenn Sie möchten, Machen Sie diese Änderung für alle Repositories dann können Sie Attribute Datei in folgenden Ort hinzufügen HOME. configgitattributes Ich hatte das gleiche Problem nach der Bearbeitung einer meiner Dateien in einem neuen Editor. Stellt sich heraus, dass der neue Editor eine andere Codierung (Unicode) als mein alter Editor (UTF-8) verwendet hat. Also habe ich einfach meinen neuen Redakteur gesagt, um meine Dateien mit UTF-8 zu speichern und dann git zeigte meine Änderungen wieder richtig und sah es nicht als Binärdatei. Ich denke, das Problem war einfach, dass git nicht wissen, wie man Dateien von verschiedenen Codierungstypen vergleichen kann. Also die Kodierung Typ, den Sie wirklich verwenden, egal, solange es bleibt konsistent. Ich habe es nicht getestet, aber ich bin mir sicher, ob ich meine Datei mit der neuen Unicode-Codierung begangen hätte, als ich das nächste Mal Änderungen an dieser Datei vorgenommen hätte, hätte es die Änderungen richtig angezeigt und es nicht als Binär erkannt, da es dann hätte Vergleiche zwei Unicode-codierte Dateien und keine UTF-8-Datei in einer Unicode-Datei. Sie können eine App wie Notepad verwenden, um den Codierungstyp einer Textdatei leicht zu sehen und zu ändern. Öffnen Sie die Datei im Editor und verwenden Sie das Menü Encoding in der Symbolleiste. Ich habe nur mehrere Stunden damit verbracht, alles auf dieser Liste durchzusetzen, um herauszufinden, warum einer der Testprojekte in meiner Lösung keine Tests für den Explorer hinzufügte. Es stellte sich in meinem Fall heraus, dass irgendwie (vermutlich wegen einer armen Git irgendwo verschmelzen), dass VS eine Referenz das Projekt insgesamt verloren hatte. Es baute noch, aber ich bemerkte, dass es nur die Abhängigkeiten gebaut hat. Ich habe dann bemerkt, dass es nicht in der Abhängigkeitsliste selbst auftaucht, also habe ich das Testprojekt entfernt und erneut hinzugefügt und alle meine Tests wurden endlich angezeigt. Beantwortet Dec 4 14 um 14:51 Visual Studio ist hier wirklich nicht relevant. Wenn Sie Git verwenden, um mit anderen auf GitHub zusammenzuarbeiten, stellen Sie sicher, dass Git richtig konfiguriert ist, um Linienendungen zu behandeln. Jedes Mal, wenn du die Rückkehr auf deiner Tastatur drückst, fügst du eigentlich einen unsichtbaren Charakter ein, der als Zeilenende bezeichnet wird. Historisch gesehen haben verschiedene Betriebssysteme Leitungsendungen unterschiedlich gehandhabt. Wenn Sie Änderungen in einer Datei anzeigen, behandelt Git Zeilenendungen auf seine eigene Weise. Da Sie bei Projekten mit Git und GitHub zusammenarbeiten, kann Git unerwartete Ergebnisse erzielen, wenn Sie beispielsweise auf einer Windows-Maschine arbeiten und Ihr Mitarbeiter eine Änderung in OS X vorgenommen hat. Globale Einstellungen für Zeilenendungen Der Befehl git config core. autocrlf Wird verwendet, um zu ändern, wie Git Linien endet. Es dauert ein einziges Argument. Bei OS X übergeben Sie einfach die Eingabe in die Konfiguration. Zum Beispiel: Unter Windows geht man einfach auf die Konfiguration über. Zum Beispiel: Unter Linux gehst du einfach die Eingabe in die Konfiguration. Zum Beispiel: Auf OS X und Linux möchten Sie in der Regel die Eingabe für diese Einstellung übergeben. Unter Windows willst du normalerweise true verwenden Zum Beispiel: Per-Repository-Einstellungen Optional können Sie die Art und Weise konfigurieren, wie Git Linienendungen auf einer Repository-Basis verwaltet, indem Sie eine spezielle. gitattributes-Datei konfigurieren. Diese Datei ist in das Repository eingegangen und überschreibt eine Einzelperson-core. autocrlf-Einstellung, um ein konsistentes Verhalten für alle Benutzer zu gewährleisten, unabhängig von ihren Git-Einstellungen. Der Vorteil einer. gitattributes-Datei ist, dass Ihre Linienkonfigurationen mit Ihrem Repository verknüpft sind. Sie müssen sich nicht darum kümmern, ob oder nicht Kollaborateure die gleichen Zeilenende Einstellungen haben, die Sie tun. Die. gitattributes-Datei muss im Stammverzeichnis des Repositorys erstellt und wie jede andere Datei begangen werden. Heres ein Beispiel für die Datei im GitHub Developers Guide. Eine. gitattributes-Datei sieht aus wie eine Tabelle mit zwei Spalten: Auf der linken Seite ist der Dateiname für Git zu übereinstimmen. Auf der rechten Seite ist die Linie endet Konfiguration, die Git für diese Dateien verwenden sollte. Heres ein Beispiel. gitattributes Datei. Sie können es als Vorlage für Ihre Repositories verwenden: Youll bemerken, dass Dateien abgestimmt sind -.c..sln. png -, durch einen Raum getrennt, dann gegeben eine Einstellung - Text. Text eolcrlf. binär. Gehen Sie gut über einige mögliche Einstellungen unten. Textauto Git wird die Dateien in was auch immer es denkt, ist am besten. Dies ist eine gute Standardoption. Text eolcrlf Git wird immer Line Endings zu CRLF bei der Kasse umwandeln. Sie sollten dies für Dateien verwenden, die CRLF-Endungen behalten müssen, auch auf OSX oder Linux. Zum Beispiel ist hier ein Windows-Projekt, das CRLF-Zeilenendungen erzwingt. Text eollf Git wird immer Line Endings zu LF bei der Kasse umwandeln. Sie sollten dies für Dateien verwenden, die LF-Endungen behalten müssen, auch unter Windows. Zum Beispiel ist hier ein Projekt, das LF-Linienendungen erzwingt. Binär Git wird verstehen, dass die angegebenen Dateien nicht Text sind, und es sollte nicht versuchen, sie zu ändern. Die binäre Einstellung ist auch ein Alias ​​für - text - diff. Aktualisieren eines Repositorys nach dem Ändern von Zeilenendungen Nachdem Sie die core. autocrlf-Option festgelegt und eine. gitattributes-Datei festgelegt haben, können Sie feststellen, dass Git Dateien festlegen möchte, die Sie nicht geändert haben. An diesem Punkt ist Git eifrig, die Zeilenendungen jeder Datei für Sie zu ändern. Der beste Weg, um Ihre Repositorys Line Endings automatisch zu konfigurieren, besteht darin, zuerst Ihre Dateien mit Git zu sichern, jede Datei in deinem Repository zu löschen (mit Ausnahme des. git-Verzeichnisses) und dann die Dateien auf einmal wiederherzustellen. Sichern Sie Ihre aktuellen Dateien in Git, so dass keine Ihrer Arbeit verloren geht. Entfernen Sie jede Datei aus dem Gits-Index. Umschreiben Sie den Git-Index, um alle neuen Zeilenendungen aufzunehmen. Fügen Sie alle Ihre geänderten Dateien zurück, und bereiten sie für ein Commit vor. Dies ist Ihre Chance zu prüfen, welche Dateien, wenn überhaupt, unverändert waren. Übernehmen Sie die Änderungen an Ihrem Repository.

No comments:

Post a Comment