Wie benenne ich eine Datei in Git um, die sich nur von Fall zu Fall unterscheidet?

In meinem Git-Projekt (Xcode) habe ich einen Dateinamen mit falscher Groß-/Kleinschreibung übergeben. Jetzt habe ich versucht, es umzubenennen, aber wenn ich es festlege, bekomme ich:

fatal: Dateialias 'MyProject/MyFile.h' wird nicht hinzugefügt ('MyProject/MyFilE.h' existiert bereits im Index)

Ich bin mir sicher, dass dies daran liegt, dass Git nicht daran gewöhnt ist, auf einem Dateisystem mit Groß- und Kleinschreibung wie HFS+ ausgeführt zu werden. Aber wie umgehe ich das?

Ich habe versucht, beide Dateien in etwas anderes umzubenennen und das zu bestätigen und sie dann wieder in das umzubenennen, was ich möchte, aber es schlägt immer noch fehl (mit derselben Fehlermeldung).

Antworten (4)

Wie bei stackoverflow gefragt und beantwortet , gibt es eine einfachere Möglichkeit, dies zu tun, ohne ein neues Dateisystem in einer Disk-Image-Datei zu erstellen:

Verschieben Sie Ihre vorhandene Datei beiseite, übertragen Sie diese Verschiebung und verschieben Sie sie dann zurück, wobei Sie die Groß- und Kleinschreibung verwenden, die Sie beibehalten und übertragen möchten. Getan.

Beispiel:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
Um Linkfäule zu vermeiden, bitten wir Sie normalerweise, die relevanten Teile der Antwort hinter dem Link in den Hauptteil der Antwort zu kopieren.
Danke @ian-c. Ich hatte gehofft, dass diese Regel nicht für Links innerhalb der Stackexchange-Familie gilt.
Ja, ich verstehe, was Sie sagen, aber Konsistenz ist schön.
Seltsam. Ich war mir sicher, dass ich das ausprobiert habe, aber heute funktioniert es. Vielen Dank.

Schritt 1 : Benennen Sie die Datei einfach mit einem anderen Namen um (als nur Buchstaben). Wählen Sie einfach einen zufälligen Namen, der sich vom aktuellen Namen und dem Namen unterscheidet, den Sie ihr geben möchten.

Schritt 2 : Übertragen Sie diese Datei per GUI (Xcode) oder per CLI (Terminal)

Schritt 3 : Benennen Sie die Datei so um, wie Sie sie ursprünglich umbenennen wollten. Es wird also jetzt auch mehr Unterschiede geben als nur beim bisherigen Namen.

Schritt 4 : Übertragen Sie die umbenannte Datei erneut.

Keine Zaubertricks erforderlich. Und Sie können wählen, ob Sie per GUI oder CLI festschreiben möchten.

Ich habe noch keine Möglichkeit gefunden, dies direkt in einem Dateisystem zu beheben, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird. Sie benötigen ein Dateisystem, bei dem die Groß-/Kleinschreibung beachtet wird.

Glücklicherweise bietet Mac OS X eine gute Unterstützung für das Mounten virtueller Festplatten, sodass Sie schnell und einfach ein (vorübergehendes) Dateisystem mit Berücksichtigung der Groß-/Kleinschreibung auf Ihrem Computer erstellen (erstellen) können.

Öffnen Sie das Festplatten-Dienstprogramm, erstellen Sie ein neues Image und stellen Sie das Feld „Format“ auf eine der Versionen von „Mac OS Extended“ ein, bei denen die Groß- und Kleinschreibung beachtet wird. Stellen Sie außerdem sicher, dass es groß genug für Ihr Repository ist.

Mounten Sie Ihre neue Festplatte, checken Sie das Git-Repository darauf aus, stellen Sie sicher, dass die korrekt benannte Datei den richtigen Inhalt hat, und löschen Sie die andere. Committen und pushen Sie Ihre Änderungen, und dann können Sie das Disk-Image aushängen und löschen.

Wenn Sie keinen Remote-Server zum Klonen haben (dh Sie führen nur ein Git-Repository lokal auf Ihrer Festplatte aus), denken Sie daran, dass Sie direkt von dem anderen Git-Repository auf Ihrer Festplatte klonen können.

Das ist furchtbar arbeitsintensiv. Sie können dies tun, ohne ein neues Dateisystem in einer Disk-Image-Datei hochfahren zu müssen.

Ich verwende Quellbaum. Ohne die CLI zu verwenden, gibt es einen einfachen Schritt, dies zu tun. Benennen Sie die Datei in einen anderen Namen um (z. B. Index.php in Index_old.php), dann übergeben Sie sie und drücken Sie .. ändern Sie den Namen erneut in den gewünschten Namen (index.php), dann übergeben Sie sie und senden Sie sie ab.