Groß- und Kleinschreibung in Git

82

Ich bin auf ein Problem mit Git gestoßen. Grundsätzlich habe ich false gesetzt, core.ignorecaseweil ich die Groß- und Kleinschreibung einiger Ordner ändern wollte (da ich unter OSX mit einem Dateisystem bin, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, wurden die Änderungen nicht anders angezeigt). Beim Abrufen meiner Daten habe ich festgestellt, dass jetzt jeder umbenannte Ordner zweimal im Repository angezeigt wird, sowohl mit dem alten als auch mit dem neuen Namen. Ich weiß nicht, was ich tun soll, um die alten Ordner zu entfernen, da sie nicht lokal angezeigt werden (ich habe versucht, wieder core.ignorecaseauf true zu setzen , aber es hilft nicht).

Entropid
quelle
1
Vielleicht könnten Sie ein ext3-Dateisystem über einem Image erstellen, es mounten und dieses Dateisystem mit Groß- und Kleinschreibung berücksichtigen.
André Puel
@ AndréPuel na ja, eigentlich habe ich nach etwas 'einfacherem' gesucht. : P aber danke für den Rat, ich werde es versuchen, wenn ich keine anderen Lösungen finde.
Entropid

Antworten:

123

Möglicherweise könnte eine Problemumgehung ähnlich diesem Kommentar in einem msysgit-Problem (für ein anderes Betriebssystem ohne Berücksichtigung der Groß- und Kleinschreibung: Windows) hilfreich sein.

Ich bin auf dasselbe Problem gestoßen. Ein Paketname in Eclipse wurde überarbeitet und der Wechsel zu einem früheren Build wurde unterbrochen, da der Ordnername nicht zurückgesetzt wurde. Ich verwende Windows 7, Git 1.7.0.2.msysgit.0

Mein Ordner wurde in Windows in " folder" umbenannt, Folderin Git jedoch als " " angezeigt .
Ich habe das Problem behoben, indem ich es Folderin Windows in " " umbenannt und dann ausgeführt habe:

git mv "Folder" "Folder2"
git mv "Folder2" "folder"

Beachten Sie, dass seit Git 2.0.1 (Juni 2014) git mv Folder foldernur funktionieren sollte!

Siehe " Git: Ändern der Groß- und Kleinschreibung von Dateinamen "

VonC
quelle
1
Mir ist aufgefallen, dass beim Umbenennen auf diese Weise das zweite Umbenennen einige Zeit in Anspruch nehmen kann. Die Antwort ist, geduldig zu sein; Der Ordner wird schließlich umbenannt, dann können Sie ihn festschreiben.
NathanAldenSr
Eine andere Möglichkeit, dasselbe zu erreichen, besteht darin, "Folder" in "Folder2" umzubenennen und ein Commit durchzuführen, und dann "Folder2" in "Ordner" und das letzte Commit zu ändern.
DaniCE
@DaniCE Ich habe gerade die Antwort bearbeitet: Mit Git 2.0.1 sollte dies viel einfacher sein.
VonC
21

Sie können ein Disk-Image (vorzugsweise ein Sparsebundle-Disk-Image) mit einem Dateisystem erstellen, bei dem zwischen Groß- und Kleinschreibung unterschieden wird, und dort Ihr Git-Repository auschecken.

Der folgende Screenshot des Festplatten-Dienstprogramms zeigt, wie Sie ein Disk-Image erstellen, bei dem zwischen Groß- und Kleinschreibung unterschieden wird.

Festplatten-Dienstprogrammeinstellungen

adib
quelle
Eine viel bessere, dauerhafte Lösung für dieses Problem und andere Rätsel, die sich aus der Groß- und Kleinschreibung ergeben. Ich habe das Disk-Image erstellt. kopierte meine alten Git-Repos hinein; Ich habe einen symbolischen Link erstellt, von dem aus ich alle meine Git-Repos zur neuen, spärlichen Bundle-Version aufbewahrt habe. Zurück zum normalen Workflow, um nie wieder darauf zu stoßen.
jwd630
Die auf diese Weise erstellte Festplatte ist sehr, sehr langsam.
Minqi Pan
1
@MinqiPan, ich hatte das gleiche Problem, aber es sollte nicht sein, wenn Sie ein APFS-Volume erstellen. APFS-Volumes können in derselben "Container" -Partition vorhanden sein , wodurch keine Leistungseinbußen auftreten.
Victor Sergienko
21

Verwenden Sie den folgenden Befehl unter macOS. Dadurch wird Ihre Git-Konfiguration so geändert, dass bei Dateinamen zwischen Groß- und Kleinschreibung unterschieden wird.

git config core.ignorecase false

Sie können dies global ~/.gitconfigeinstellen, indem Sie es bearbeiten und einstellen unter core:

[core]
    ignoreCase = false
Brandon Yang
quelle
Ich habe genau das Gegenteil getan, damit git eine Rebase erfolgreich durchführt, die eine Umbenennung des Falls beinhaltet. Vielen Dank!
Sorin
12

Mac OS X ist standardmäßig "Groß- und Kleinschreibung nicht berücksichtigen, aber die Groß- und Kleinschreibung wird beibehalten". Dies ist eine wichtige Unterscheidung.

Ich schlage vor, dass Sie ein anderes Disk-Image erstellen und es speziell als "HFS Case Sensitive" formatieren.

Arafangion
quelle
Vielen Dank für den Tipp, aber der Beitrag darüber hat alles gelöst!
Entropid
7
Leider basiert eine Menge schlechter Software (natürlich Adobe) auf dem standardmäßig kaputten OSX-Dateisystem. Sei vorsichtig.
Jim Stewart
5
git mv "Folder" "Folder2"
git mv "Folder2" "folder"
git commit -a -m "my message"
Mohamed EL HABIB
quelle
Jep. Sie müssen weitermachen und es auch begehen. ++
RubberDuck