2010-10-13 8 views
51

Ich wollte einen Ordner von "Frameworks" in "frameworks" umbenennen, aber git würde mich nicht den neuen Namen in Kleinbuchstaben hinzufügen lassen. Ich denke, es behandelt Dateinamen ohne Berücksichtigung der Groß- und Kleinschreibung, oder?Git: Datei Umbenennen

A git add frameworks/ -f half nicht

+0

Welches Betriebssystem? –

+0

Ich rufe MacOS 10.6 –

Antwort

97

Sie können versuchen:


Aber die Frage des Falles (unter Windows zum Beispiel) in den msysgit issue 228 beschrieben (wieder: dies sollte now -- June 2014 -- work with git 2.0.1)

es immer eine Option ist ignorecase auf false in dem einzustellen Konfigurationsdatei, die Unix wie Git Semantik auf NTFS zwingen wird.
Git unterstützt dieses Verhalten, aber es ist nicht der Standard - von NTFS Sicht a.txt und A.txt die gleiche Sache sind - so versucht Git, dass zu erhalten, da die meisten Benutzer

erwarten Als eine bessere Problemumgehung können Sie

git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt 

, die auch den Fall der Datei ändert, wie auf der Festplatte gespeichert.

Dieser Blog-Eintrag illustrates the same issue on MacOs während eines Fütterungsmaterial:

Der Standard auf Mac OS X-Dateisysteme ist, dass sie Groß- und Kleinschreibung sind. FFFFFF.gif ist das gleiche wie ffffff.gif.

Wenn Sie die fragliche Datei löschen, nur aus dem Dateisystem, nicht aus dem Git-Index, beachten Sie, können Sie den betreffenden Zweig zusammenführen und die Datei wiederherstellen, als ob nichts passiert wäre.

Die Schritte sind ziemlich einfach:

$ rm file/in/question.gif 
$ git merge trunk 

Wie auch immer, remember what git mv stands for:

mv oldname newname 
git add newname 
git rm oldname 

, also wenn newname und oldname Zusammenstoß, müssen Sie sie anders machen (auch wenn es ist nur für einen kurzen Zeitraum), daher die git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

+0

Ich habe bereits 'git mv' versucht, aber es gab mir' fatal: umbenennen 'Frameworks' fehlgeschlagen: Ungültiges Argument' –

+0

@Erik: Was war die genaue Befehlszeile Sie versucht? – VonC

+1

Ok, der 2-step 'git mv' hat funktioniert! –

1

Ich hatte ein ähnliches Problem und konnte nicht einen neuen Ordnernamen (anderen Fall) auf Remote-Repos ändern. Ich fand, dass die einfachste Lösung einfach darin bestand, die Datei aus dem Repo zu entfernen und zu committen. Auslösen einer Löschaktion Dann wieder hinzufügen und wenn ich hinzugefügt habe, kam es mit dem richtigen Fall.

2

Wenn Sie auf Github hosten, können Sie die Umbenennungsfunktion auf ihrer Website verwenden. Musste das Gehäuse für 5 Dateien wechseln und fand es wirklich gut.