Ich habe ein paar Dateien Namen von de-Kapital der ersten Buchstaben geändert, wie in Name.jpg
zu name.jpg
. Git erkennt diese Änderungen nicht und ich musste die Dateien löschen und erneut hochladen. Gibt es eine Möglichkeit, dass Git bei der Überprüfung auf Änderungen der Dateinamen zwischen Groß- und Kleinschreibung unterscheiden kann? Ich habe keine Änderungen an der Datei selbst vorgenommen.
git
case-sensitive
git-commit
git-config
Gil Shulman
quelle
quelle
git mv
funktioniert ein einfaches .Antworten:
Sie können git mv verwenden :
quelle
-f
Flag nicht mehr .-f
Schalter mit der neuesten git (2,18) , sonst könnte man die bekommenfatal: destination exists
Fehler.Git verfügt über eine Konfigurationseinstellung, die angibt, ob zwischen Groß- und Kleinschreibung unterschieden werden soll :
core.ignorecase
. Um Git mitzuteilen, dass die Groß- und Kleinschreibung beachtet werden soll, setzen Sie diese Einstellung einfach auffalse
:Dokumentation
Aus der
git config
Dokumentation :Dateisysteme, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird
Die beiden beliebtesten Betriebssysteme mit Dateisystemen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird, sind:
quelle
false
es eine schlechte Idee ist , diese Option in einem Dateisystem ohne Berücksichtigung der Groß- und Kleinschreibung festzulegen . Dies ist nicht unbedingt offensichtlich. Zum Beispiel habe ich dies einfach auf meinem Mac versucht, weil ich dachte, es würde meine Probleme beheben, und dann eine Datei vonproductPageCtrl.js
in umbenanntProductPageCtrl.js
. Ich habegit status
eine neue Datei namens aufgerufenProductPageCtrl.js
, aber nicht gedacht, dassproductPageCtrl.js
sie gelöscht wurde. Als ich die neuen Dateien hinzufügte, festschrieb und an GitHub weiterleitete, enthielt das GitHub-Repo jetzt beide Dateien, obwohl mein (angeblich aktuelles) lokales Repo nur eine hatte.git mv
diese Option , um die Datei zu verschieben und zu sehen, wie Git sie verwaltet. Wenn Sie die Datei ohne Git verschieben, kann Git nichts tun, da das Dateisystem Git nicht die Wahrheit sagt. Dies ist ein Problem von ntfs / fat / hfs und thelike und nicht von git / linux.Mit SourceTree konnte ich dies alles über die Benutzeroberfläche tun
FILE.ext
inwhatever.ext
whatever.ext
infile.ext
Es ist ein bisschen langweilig, aber wenn Sie es nur mit ein paar Dateien machen müssen, ist es ziemlich schnell
quelle
Folgendes habe ich unter OS X getan:
Zwei Schritte, da ich sonst den Fehler "Datei existiert" erhalten habe. Vielleicht kann es in einem Schritt durch Hinzufügen
--cached
oder so gemacht werden.quelle
-f
(Kraft) ist die Flagge der Sie suchen-f
Flag hilft nicht, wenn der zugrunde liegende FS nicht zwischen Groß- und Kleinschreibung unterscheidet. Für mich-f
funktioniert! Danke für den Tipp-f
Flag.git -c "core.ignorecase=false" add .
berücksichtigt Dateien, deren Groß- / Kleinschreibung für das Festschreiben geändert wurde.Manchmal ist es nützlich, die Groß- und Kleinschreibung von Git vorübergehend zu ändern:
Methode 1 - Ändern Sie die Groß- und Kleinschreibung für einen einzelnen Befehl:
git -c core.ignorecase=true checkout mybranch
um die Groß- und Kleinschreibung für einen einzelnencheckout
Befehl auszuschalten . Oder allgemeiner : . (Dank an VonC, der dies in den Kommentaren vorgeschlagen hat.)git -c core.ignorecase=
<<true or false>>
<<command>>
Methode 2 - Ändern Sie die Groß- und Kleinschreibung für mehrere Befehle:
So ändern Sie die Einstellung länger (z. B. wenn mehrere Befehle ausgeführt werden müssen, bevor Sie sie wieder ändern):
git config core.ignorecase
(Dies gibt die aktuelle Einstellung zurück, zfalse
. B. ).git config core.ignorecase
<<true or false>>
- Stellen Sie die gewünschte neue Einstellung ein.git config core.ignorecase
<<false or true>>
- Setzen Sie den Konfigurationswert auf die vorherige Einstellung zurück.quelle
git -c core.ignorecase=<true or false> checkout <<branch>>
? Nichts mehr zurückzusetzen.Unter OSX, um dieses Problem zu vermeiden und andere Probleme zu vermeiden , mit auf Groß- und Kleinschreibung Dateisystem entwickeln, können Sie Festplatten - Dienstprogramm verwenden , um einen Fall zu erstellen sensible virtuelles Laufwerk / Disk - Image.
Führen Sie das Festplatten-Dienstprogramm aus, erstellen Sie ein neues Festplatten-Image und verwenden Sie die folgenden Einstellungen (oder ändern Sie sie nach Ihren Wünschen, ohne die Groß- und Kleinschreibung zu beachten):
Stellen Sie sicher, dass git jetzt auf einem FS mit Groß- und Kleinschreibung beachtet wird:
quelle
Ich habe die folgenden Lösungen aus den anderen Antworten ausprobiert und sie haben nicht funktioniert:
git mv filename
git rm -f filename
Wenn Ihr Repository remote gehostet wird (GitHub, GitLab, BitBucket), können Sie die Ursprungsdatei (GitHub.com) umbenennen und das Umbenennen der Datei von oben nach unten erzwingen.
Die folgenden Anweisungen beziehen sich auf GitHub. Die allgemeine Idee dahinter sollte jedoch für jede Remote-Repository-Hosting-Plattform gelten. Beachten Sie den Dateityp, den Sie umbenennen möchten, dh ob es sich um einen Dateityp handelt, den GitHub im Browser als bearbeitbar (Code, Text usw.) oder nicht bearbeitbar (Bild, Binärdatei usw.) erachtet.
branchname
Zweig übernehmen" ausgewählt ist, und klicken Sie auf die Schaltfläche "Änderungen festschreiben"branchname
Zweig übernehmen" ausgewählt ist, und klicken Sie auf die Schaltfläche "Änderungen festschreiben"quelle
Ähnlich wie bei @ Sijmens Antwort hat dies unter OSX beim Umbenennen eines Verzeichnisses für mich funktioniert (inspiriert von dieser Antwort aus einem anderen Beitrag):
Das einfache Ausführen
git mv CSS css
ergab den ungültigen Argumentfehler:fatal: renaming '/static/CSS' failed: Invalid argument
Vielleicht, weil das Dateisystem von OSX die Groß- und Kleinschreibung nicht berücksichtigtps Übrigens, wenn Sie Django verwenden, würde collectstatic den Fallunterschied ebenfalls nicht erkennen, und Sie müssten die oben genannten Schritte auch manuell im statischen Stammverzeichnis ausführen
quelle
1) Datei umbenennen
Name.jpg
inname1.jpg
2) Entfernen Sie die entfernte Datei
Name.jpg
3) Datei umbenennen
name1.jpg
inname.jpg
4) Die hinzugefügte Datei
name.jpg
zum vorherigen Commit ändernquelle
fatal: bad source, source=name1.jpg, destination=name.jpg
in Schritt 3. Haben Sie einen Vorschlag? Thxgit add
.Ich habe die folgenden Schritte ausgeführt:
Für mich ist das eine einfache Lösung
quelle
Wir können den Befehl git mv verwenden. Beispiel unten: Wenn wir die Datei abcDEF.js in abcdef.js umbenannt haben, können wir den folgenden Befehl vom Terminal aus ausführen
quelle
Mac OSX High Sierra 10.13 behebt dies etwas. Erstellen Sie einfach eine virtuelle APFS-Partition für Ihre Git-Projekte. Standardmäßig gibt es keine Größenbeschränkung und keinen Speicherplatz.
Sensitive
git
undln -s /Volumes/Sensitive/git /Users/johndoe/git
Ihr Laufwerk wird in sein
/Volumes/Sensitive/
Wie kann ich nur Dateinamenänderungen in Git zwischen Groß- und Kleinschreibung unterscheiden?
quelle
Ich habe dieses Problem unter MacOS mehrmals gesehen. Git unterscheidet zwischen Groß- und Kleinschreibung, aber Mac bewahrt nur die Groß- und Kleinschreibung.
Jemand schreibt eine Datei fest
Foobar.java
und beschließt nach einigen Tagen, sie in umzubenennenFooBar.java
. Wenn Sie den neuesten Code abrufen, schlägt dies fehlThe following untracked working tree files would be overwritten by checkout...
Der einzige zuverlässige Weg, den ich gesehen habe, um dies zu beheben, ist:
git rm Foobar.java
git commit -m 'TEMP COMMIT!!'
git rebase --continue
git rebase -i HEAD~2
unddrop
dieTEMP COMMIT!!
FooBar.java
quelle
Wenn Sie viele Dateien umbenannt haben und einige davon nur eine Änderung des Gehäuses sind, ist es schwer zu merken, welches welches ist. Das manuelle "Verschieben" der Datei kann ziemlich aufwändig sein. Was ich also während meiner Aufgaben zur Änderung des Dateinamens tun würde, sind:
Dadurch werden alle Fallprobleme behoben, ohne dass Sie herausfinden müssen, welche Dateien oder Ordner Sie umbenannt haben.
quelle
git commmit --amend
in Absatz 4? Andernfalls wird beim Entfernen aller Dateien ein zusätzliches Commit ausgeführt. Oder Sie könnengit rebase -i
mit Kürbis verwenden.Wenn nichts funktioniert hat, verwenden Sie git rm Dateiname, um die Datei von der Festplatte zu löschen und wieder hinzuzufügen.
quelle
Ich nahm die Antwort von @CBarr und schrieb ein Python 3-Skript, um es mit einer Liste von Dateien zu tun:
quelle