Wie benenne ich eine Datei in Git um, die sich nur in Groß- und Kleinschreibung unterscheidet?


14

In meinem git (Xcode) -Projekt habe ich einen Dateinamen mit falscher Schreibweise übergeben. Jetzt habe ich versucht, es umzubenennen, aber wenn ich mich verpflichte, erhalte ich:

fatal: Datei-Alias ​​'MyProject / MyFile.h' wird nicht hinzugefügt ('MyProject / MyFilE.h' ist bereits im Index vorhanden)

Ich bin mir sicher, dass dies daran liegt, dass Git nicht für ein case-erhaltendes, case-unempfindliches Dateisystem wie HFS + verwendet wird. Aber wie komme ich darum herum?

Ich habe versucht, beide Dateien in etwas anderes umzubenennen, und habe dies zugesichert und sie dann wieder in das von mir gewünschte Format umbenannt, aber es schlägt immer noch fehl (mit derselben Fehlermeldung).

Antworten:


21

Wie beim 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, bestätigen Sie diese und verschieben Sie sie dann zurück, wobei Sie den Fall verwenden, den Sie beibehalten und bestätigen möchten. Erledigt.

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"

Im Interesse der Vermeidung von Link Rot bitten wir Sie normalerweise, die relevanten Teile der Antwort hinter dem Link in den Hauptteil der Antwort zu kopieren.
Ian C.

Danke @ ian-c. Ich hatte gehofft, dass diese Regel nicht für Links innerhalb der stackexchange-Familie gilt.
mspasov

1
Ja, ich verstehe, was Sie sagen, aber Beständigkeit ist schön.
Ian C.

Seltsam. Ich war mir sicher, dass ich es versucht habe, aber heute funktioniert es. Vielen Dank.
Ken

2

Ich habe noch keine Möglichkeit gefunden, dies direkt auf einem Dateisystem zu beheben, bei dem zwischen Groß- und Kleinschreibung unterschieden wird. Sie benötigen ein Dateisystem, bei dem zwischen Groß- und Kleinschreibung unterschieden wird.

Glücklicherweise bietet Mac OS X eine gute Unterstützung für die Bereitstellung virtueller Festplatten, sodass Sie schnell und einfach ein (temporäres) Dateisystem mit Groß- und Kleinschreibung auf Ihrem Computer erstellen können.

Öffnen Sie das Festplatten-Dienstprogramm, erstellen Sie ein neues Image und setzen Sie das Feld "Format" auf eine der Groß- / Kleinschreibung berücksichtigenden Versionen von "Mac OS Extended". Stellen Sie außerdem sicher, dass der Speicher groß genug für Ihr Repository ist.

Hängen Sie Ihre neue Festplatte ein, 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. Übernehmen und übertragen Sie Ihre Änderungen. Anschließend können Sie das Datenträger-Image aushängen und löschen.

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


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

1

Schritt 1 : Just benennen Sie die Datei mit einem Namen, der ist mehr verschiedene (. Als nur den Fall von Buchstaben) Wählen Sie einfach einen zufälligen Namen unterscheidet sich von dem aktuellen Namen und aus dem Namen , den Sie es geben wollen.

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

Schritt 3 : Benennen Sie die Datei wie gewünscht um. Es wird also jetzt auch mehr Unterschiede geben als nur den Fall mit dem vorherigen Namen.

Schritt 4 : Übernehmen Sie die umbenannte Datei erneut.

Keine Zaubertricks nötig. Und Sie können wählen, ob Sie per GUI oder CLI ein Commit durchführen möchten.


0

Ich benutze Sourcetree. Ohne die Verwendung von CLI ist dies ein einfacher Schritt. Benennen Sie die Datei in einen anderen Namen um (z. B. Index.php in Index_old.php), bestätigen Sie und drücken Sie .. Ändern Sie den Namen erneut in den gewünschten Namen (index.php), und bestätigen Sie dann und senden Sie ihn ab.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.