Diese Art von Problem, indem Sie versuchen von einem Repository zu ziehen, die zwei Dateinamen, die sich nur für den Fall, häufig verursacht. Wenn Sie auf FAT, NTFS in der Groß- und Kleinschreibung Modus (im Wesentlichen, wann immer es unter Windows verwendet wird), oder HFS + in Groß-und Kleinschreibung Modus, und zwei Dateien "Foobar" und "FOOBAR", dann wird Git zwei verschiedene sehen Dateien, aber das Dateisystem wird nur eins sehen, was alle Arten von Problemen verursachen wird. Git wird zur Kasse gehen, sagen wir "FOOBAR", und dann "foobar" auschecken, was das Dateisystem so sieht, dass es einfach den Inhalt von "FOOBAR" ersetzt, aber es an seinem Platz belässt. Nun zu Git, es scheint, dass "FOOBAR" durch den Inhalt von "Foobar" ersetzt wurde, und "Foobar" ist weg.
Es gibt zwei verschiedene Erscheinungsformen dieses Grundproblems. Eine ist, wenn Ihr Repository tatsächlich zwei Dateien enthält, die sich nur in der Groß-/Kleinschreibung unterscheiden. In diesem Fall müssen Sie an einem Dateisystem arbeiten, bei dem die Groß-/Kleinschreibung beachtet 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 auftritt, die den Fall der Datei ändert. Angenommen, das Git-Repository enthält eine Umbenennung von "BEISPIEL" in "Beispiel". Bevor Git die neue Version auscheckt, versucht es zu überprüfen, ob es eine vorhandene Datei, die Sie auf Ihrer Festplatte haben, überschreibt. Da es denkt, dass "example" ein neuer Dateiname ist, wird es das Dateisystem fragen, wenn es existiert, und das Dateisystem wird "EXAMPLE" sehen und ja sagen, also wird Git die neue Version ablehnen, da es denkt, dass es überschrieben wird nicht aufgezeichnete Dateien. In diesem Fall reicht eine einfache git reset --hard <revision-to-checkout>
aus, wenn Sie keine lokalen Änderungen haben, die Ihnen wichtig sind, um Sie über das Problem und die neue Revision zu informieren.Denken Sie daran, Dateien nicht in andere Namen umzubenennen, die sich nur dann unterscheiden, wenn Sie ein Dateisystem verwenden, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, da dies zu Problemen wie diesem führen kann.
Siehe, ob Erklärung in http://git.or.cz/gitwiki/GitFaq hilft. –
Dito "* Das einzige, was zu funktionieren scheint, ist das Löschen der problematischen Datei und ein erneuter Git-Pull. *". Für mich war mindestens eine Datei nicht in Git; Es wurde von einer Platzhalterregel überprüft. Nicht sicher, warum sie Blocker waren. – ruffin