Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Die Dateisysteme von Windows, macOS und Linux haben Einschränkungen und Verhaltensweisen, die von einer oder mehreren anderen Plattformen nicht immer unterstützt werden. Da Git eine plattformübergreifende Technologie ist, ist es möglich, dass ein Entwickler auf einer Plattform einen Commit ausführen kann, der Dateien oder Ordner enthält, die inkompatible Namen mit dem Dateisystem einer anderen Plattform haben. Der Schutz Ihres Repositorys vor dieser Inkompatibilität ist wichtig, da Entwickler auf anderen Plattformen möglicherweise unwissentlich einen Commit auschecken, der ihre arbeitsfähigen Verzeichnisse aufgrund von nicht unterstützten Datei- oder Pfadnamen beschädigt.
Azure Repos bietet drei plattformübergreifende Kompatibilitätseinstellungen , mit denen Ihr Repository vor Personen mit Push-Commits geschützt wird, die nicht mit einer oder mehreren Plattformen kompatibel sind. Diese Einstellungen beziehen sich auf die folgenden Einschränkungen bei Dateisystemen:
- Groß- und Kleinschreibung
- Einschränkungen für Datei- und Ordnernamen
- Pfadlängenbeschränkungen
Groß- und Kleinschreibung
Die Dateisysteme von Windows und macOS sind standardmäßig groß-/kleinschreibung ignorierend (aber groß-/kleinschreibung beibehaltend). Die meisten Linux-Dateisysteme sind groß-/klein-schreibungssensitiv. Git wurde ursprünglich als Versionssteuerungssystem des Linux-Kernels erstellt, daher wird die Groß-/Kleinschreibung beachtet.
Git für Windows behebt zwar viele der Probleme mit einem Betriebssystem, bei dem die Groß-/Kleinschreibung nicht beachtet wird, aber einige Eigenheiten bleiben bestehen.
Datei- und Ordnernamen
Unter Linux ist das Auschecken eines Git-Repositorys, das sowohl File.txt als auch file.txt enthält, kein Problem. Dies sind unterschiedliche Dateinamen. Unter Windows und macOS führt das Auschecken beider Dateien dazu, dass die zweite Datei die erste überschreibt. Wenn sich zwei Ordner nur in der Groß- oder Kleinschreibung unterscheiden, werden ihre Inhalte in Dateisystemen, die nicht auf Groß- und Kleinschreibung achten, zusammengeführt.
Es gibt zwei Möglichkeiten zum Beheben eines Repositorys mit Fallkonflikten:
- Überprüfen Sie das Repository in einem case-sensitiven Umfeld. Benennen Sie Dateien und Ordner um, sodass sie nicht mehr in Konflikt geraten, und verschieben Sie diese Änderungen dann an das Repository. Das Windows-Subsystem für Linux ist eine solche Umgebung.
- Verwenden Sie den Befehl
git mv -f <conflicting name> <non-conflicting name>für jeden Konflikt. Achten Sie darauf, die genaue Groß-/Kleinschreibung für beide Dateinamen zu verwenden.
Es empfiehlt sich, die Erstellung von Fallkonflikten an erster Stelle zu vermeiden. Azure Repos bietet eine Einstellung für die Fallerzwingung , um Pushs zu verhindern, die zu dieser Situation führen würden. Für Entwickler ist es auch hilfreich, die Tab-Vervollständigung zu nutzen, um Dateien zu committen. Da sowohl Windows als auch macOS die Groß-/Kleinschreibung bewahren, stellen diese Ansätze sicher, dass Git-Interna genau die gleiche Groß-/Kleinschreibung sehen, die das Dateisystem widerspiegelt.
Verzweigungs- und Tagnamen
Sie können zwei Verzweigungen oder Tags (als refs bezeichnet) erstellen, die sich nur bei der Groß-/Kleinschreibung unterscheiden. Die Interna von Git sowie Azure DevOps Services und Azure DevOps Server behandeln sie als zwei separate refs. Auf dem Computer eines Benutzers verwendet Git das Dateisystem zur Speicherung von Referenzen. Abrufe und andere Operationen beginnen zu scheitern aufgrund der Mehrdeutigkeit.
Eine kleine Datei stellt jede Referenz dar. Wenn ein Verweisname Schrägstriche (/) enthält, stellen Ordner die Teile vor dem endgültigen Schrägstrich dar.
Eine einfache Möglichkeit, Probleme zu vermeiden, besteht darin, immer Branch- und Tagnamen in Kleinschreibung zu verwenden. Wenn Sie bereits zwei Verzweigungen oder Tags erstellt haben, die dieses Problem aufweisen, können Sie sie in der Azure Repos-Webbenutzeroberfläche beheben.
So korrigieren Sie Branch-Namen:
- Gehen Sie auf der Seite für Branches zu dem zugehörigen Commit.
- Wählen Sie im Kontextmenü "Neue Verzweigung" aus.
- Weisen Sie der Verzweigung einen neuen Namen zu, der keinen Fallkonflikt aufweist.
- Kehren Sie zur Seite für Verzweigungen zurück, und löschen Sie die widersprüchliche Verzweigung.
So korrigieren Sie Tagnamen:
- Wechseln Sie auf der Seite für Tags zum markierten Commit.
- Wählen Sie im Kontextmenü "Tag erstellen" aus.
- Geben Sie dem Tag einen neuen Namen, der keinen Fallkonflikt aufweist.
- Kehren Sie zur Seite für Tags zurück, und löschen Sie das konfliktierende Tag.
Pfad- und Dateinameneinschränkungen
Die Betriebssysteme Windows, macOS und Linux haben verschiedene Einschränkungen für Dateinamen und Pfade. Diese Einschränkungen beschränken, was Sie Dateien oder Ordner benennen können, wodurch Probleme für Teams entstehen können, die Git auf mehreren Plattformen verwenden.
Stellen Sie sich z. B. vor, dass ein Entwickler auf einer Plattform eine Änderung an einem gemeinsamen Repository vornimmt, die einen Dateinamen oder eine Pfadlänge enthält, die auf einer anderen Plattform ungültig ist. Später versucht ein anderer Entwickler, diesen Commit auf einer Plattform auszuchecken, auf der die Inhalte ungültig sind. Diese Situation führt zu einem beschädigten Arbeitsverzeichnis, das das Potenzial hat, Ihr Repository mit beschädigten Daten zu beschädigen.
Azure Repos bietet Repositoryeinstellungen , die Pushs blockieren, die Commits enthalten, die gegen eine oder mehrere der folgenden Einschränkungen verstoßen.
Referenztabelle für Dateinamen und Pfade
| Einschränkungen/Plattformen | Fenster | macOS | Linux |
|---|---|---|---|
| Dateinamenbeschränkungen |
Reservierte Dateinamen: CON, PRN, AUX, NUL, COM1-COM9, LPT1-LPT9 Reservierte Dateinamen gefolgt von .Reservierte Zeichen: \ / : * ? " < > Dateinamen, die in . oder Leerzeichen enden |
Dateinamen, die enden / |
Dateinamen, die enden / |
| Pfadlängenbeschränkungen |
Pfade in Windows haben eine maximale Länge von 260 Zeichen (einschließlich eines Null-Terminators). Bei Verzeichnissen mit .NET muss der vollqualifizierte Dateiname weniger als 260 Zeichen lang sein, und der Verzeichnisname muss weniger als 248 Zeichen lang sein. |
Dateinamen sind auf 255 Zeichen beschränkt. Pfadlängenlimits in HFS+ werden als unbegrenzt dokumentiert, obwohl einige macOS-Versionen Pfade auf 1.016 Zeichen begrenzen. Einige Dateisysteme unterstützen eine maximale Pfadlänge von 1.016 Zeichen. |
Dateinamen sind auf 255 Zeichen beschränkt. Der Maximalwert des Pfads beträgt 4096. |
Codierungsunterstützung
Microsoft hat Unterstützung für UTF-16- und UTF-32-Codierung über den Web-Pushendpunkt hinzugefügt. Diese Unterstützung bedeutet, dass wir den Codierungstyp beibehalten, sodass Sie Ihre Dateien nicht als UTF-8 neu schreiben müssen. Außerdem wird eine Warnung angezeigt, wenn Sie versuchen, eine Datei zu speichern, die nicht über das Web codiert ist (die nur UTF-Codierung unterstützt).
Der folgende Screenshot zeigt ein Beispiel für das Dialogfeld, das angezeigt wird, wenn Sie Codierungsänderungen mithilfe eines Web-Pushs einführen.