Diese Art von Problem wird häufig durch den Versuch verursacht, aus einem Repository mit zwei Dateinamen zu ziehen, die sich nur für den Fall unterscheiden. Wenn Sie FAT, NTFS im Modus ohne Berücksichtigung der Groß- und Kleinschreibung (im Wesentlichen jedes Mal, wenn es unter Windows verwendet wird) oder HFS + im Modus ohne Berücksichtigung der Groß- und Kleinschreibung verwenden und zwei Dateien "foobar" und "FOOBAR" haben, werden in Git zwei unterschiedliche Dateien angezeigt Dateien, aber das Dateisystem sieht nur eine, was alle Arten von Problemen verursacht. Git checkt beispielsweise "FOOBAR" und dann "foobar" aus, wobei das Dateisystem den Inhalt von "FOOBAR" einfach ersetzt, aber an Ort und Stelle belässt. Nun zu Git scheint es, dass "FOOBAR" durch den Inhalt von "foobar" ersetzt wurde und "foobar" weg ist.
Es gibt zwei verschiedene Erscheinungsformen dieses Grundproblems. Eine ist, wenn Ihr Repository tatsächlich zwei Dateien enthält, die sich nur in Groß- und Kleinschreibung unterscheiden. In diesem Fall müssen Sie an einem Dateisystem arbeiten, bei dem zwischen Groß- und Kleinschreibung unterschieden wird, oder Sie müssen das Repository bearbeiten, um sicherzustellen, dass keine Kollisionen dieser Art auftreten. Ein Dateisystem, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, kann den Inhalt dieses Repositorys einfach nicht speichern.
Ein anderer Fall, den Sie umgehen können, ist, wenn eine Umbenennung erfolgt, die den Fall der Datei ändert. Angenommen, das Git-Repository enthält eine Umbenennung von "BEISPIEL" in "Beispiel". Bevor Git die neue Version auscheckt, wird versucht, sicherzustellen, dass keine vorhandene Datei auf Ihrer Festplatte überschrieben wird. Da es glaubt, dass "Beispiel" ein neuer Dateiname ist, fragt es das Dateisystem, ob es existiert, und das Dateisystem sieht "BEISPIEL" und sagt "Ja", so dass Git sich weigert, die neue Version auszuchecken, da es denkt, dass sie überschrieben wird nicht verfolgte Dateien. In diesem Fall, wenn Sie keine lokalen Änderungen haben, die Sie interessieren, eine einfachegit reset --hard <revision-to-checkout>Dies reicht im Allgemeinen aus, um das Problem zu überwinden und zur neuen Revision zu gelangen. Versuchen Sie einfach, Dateien nicht in andere Namen umzubenennen, die sich nur unterscheiden, wenn Sie sich in einem Dateisystem befinden, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, da dies zu solchen Problemen führen kann.