Beachtung der Groß-/Kleinschreibung in Git

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Bei den Windows- und macOS-Dateisystemen wird die Groß-/Kleinschreibung standardmäßig nicht beachtet (die Groß-/Kleinschreibung wird aber beibehalten). Bei den meisten Linux-Dateisystemen wird die Groß-/Kleinschreibung beachtet. Git wurde ursprünglich als Versionskontrollsystem des Linux-Kernels erstellt, weshalb es nicht überrascht, dass Groß-/Kleinschreibung beachtet wird.

Während viele der Probleme mit einem Betriebssystem ohne Beachtung der Groß-/Kleinschreibung in Git für Windows behoben wurden, bleiben noch ein paar wenige Eigenheiten 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 hinsichtlich Groß-/Kleinschreibung unterscheiden, werden ihre Inhalte in Dateisystemen ohne Berücksichtigung der Groß-/Kleinschreibung miteinander vermischt.

Beheben von Groß-/Kleinschreibungskonflikten

Eine Möglichkeit, ein Repository mit diesem Problem zu reparieren, besteht darin, es in einer Umgebung auszuchecken, in der die Groß-/Kleinschreibung beachtet wird. Benennen Sie Dateien und Ordner um, damit sie nicht mehr in Konflikt stehen, und pushen Sie diese Änderungen in das Repository. Das Windows-Subsystem für Linux ist eine solche Umgebung. Ein anderer Ansatz besteht darin, den Befehl git mv -f <conflicting name> <non-conflicting name> für jeden Konflikt zu verwenden, wobei sorgfältig darauf geachtet wird, für beide Dateinamen die exakte Groß-/Kleinschreibung zu verwenden.

Vermeiden von Groß-/Kleinschreibungskonflikten

Es ist gut, das Entstehen dieser Situation erst gar nicht zuzulassen. Azure Repos bietet eine Einstellung zur Erzwingung von Groß-/Kleinschreibung, um Pushvorgänge zu verhindern, die zu dieser Situation führen würden. Für Entwickler ist es auch hilfreich, sich anzugewöhnen, die Vervollständigung mit der TAB-TASTE zum Committen von Dateien zu verwenden. Da sowohl Windows als auch macOS die Groß-/Kleinschreibung beibehalten, wird dadurch sichergestellt, dass interne Git-Vorgänge/-Elemente exakt dieselbe Groß-/Kleinschreibung sehen, die im Dateisystem verwendet wird.

Branch- und Tagnamen

Sie können zwei Branches oder Tags (auch als „refs“ (Verweise) bezeichnet) erstellen, die sich nur hinsichtlich Groß-/Kleinschreibung unterscheiden. Interne Git-Vorgänge/-Elemente sowie Azure DevOps Services/TFS behandeln sie als zwei separate „refs“ (Verweise). Auf dem Computer eines Benutzers verwendet Git das Dateisystem, um „refs“ (Verweise) zu speichern. Fetches und andere Vorgänge schlagen aufgrund der Mehrdeutigkeit fehl. Jeder Verweis (ref) wird durch eine kleine Datei dargestellt, und wenn ein Verweisname /-Zeichen enthält, werden die Teile vor dem letzten / durch Ordner dargestellt.

Eine einfache Möglichkeit, Probleme zu vermeiden, besteht darin, immer Branch- und Tagnamen mit ausschließlich Kleinbuchstaben zu verwenden. Wenn Sie bereits zwei Branches oder Tags mit diesem Problem erstellt haben, können Sie es in der Azure Repos-Webbenutzeroberfläche beheben.

Korrigieren von Branchnamen

Navigieren Sie auf der Seite „Branches“ zum zugehörigen Commit. Wählen Sie im Kontextmenü „Neuer Branch“ aus. Geben Sie dem Branch einen neuen Namen, der keinen Groß-/Kleinschreibungskonflikt aufweist. Kehren Sie zur Seite „Branches“ zurück, und löschen Sie den in Konflikt stehenden Branch.

Korrigieren von Tagnamen

Die Schritte zum Korrigieren eines Tagnamens ähneln denen für Branches. Navigieren Sie auf der Seite „Tags“ zum markierten Commit. Wählen Sie im Kontextmenü „Tag erstellen“ aus. Geben Sie dem Tag einen neuen Namen, der keinen Groß-/Kleinschreibungskonflikt aufweist. Kehren Sie zur Seite „Tags“ zurück, und löschen Sie das in Konflikt stehende Tag.