Ich versuche, eine Datei umzubenennen, um eine andere Groß- und Kleinschreibung als zuvor zu erhalten:
git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js
Wie Sie sehen können, wirft Git einen Anfall darüber. Ich habe versucht, nur mit dem einfachen alten mv
Befehl umzubenennen, aber Git übernimmt die Umbenennung nicht (als Umbenennung oder als neue nicht verfolgte Datei).
Wie kann ich eine Datei so ändern, dass sie eine andere Groß- und Kleinschreibung mit demselben Namen hat? Ich bin auf Mac OS X 10.7.3 (Lion) mit Git 1.7.9.1 unter Verwendung der Z-Shell (zsh) 4.3.15.
git
rename
case-sensitive
file-rename
knpwrs
quelle
quelle
git mv myfile foo; git mv foo MyFile
git mv hello.txt Hello.txt
funktioniert das Betriebssystem ohne Berücksichtigung der Groß- und Kleinschreibung. Siehe meine Antwort untenAntworten:
Ab Git 2.0.1 (25. Juni 2014)
git mv
funktioniert a nur auf einem Betriebssystem, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird .Siehe commit baa37bf von David Turner (
dturner-tw
) .mv
: Ermöglichen Sie das Umbenennen, um Groß- und Kleinschreibung zu korrigieren"
git mv hello.txt Hello.txt
" Bei einem Dateisystem, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, wird immer eindestination already exists
Fehler ausgelöst, da diese beiden Namen aus Sicht des Dateisystems auf denselben Pfad verweisen und der Benutzer "--force
" angeben muss, wenn der Fall des im Index und im Index aufgezeichneten Pfads korrigiert wird nächstes Commit.git mv hello.txt Hello.txt
funktioniert einfach (nicht--force
mehr erforderlich).Die andere Alternative ist:
Und benennen Sie die Datei direkt um; git hinzufügen und festschreiben.
quelle
git config core.ignorecase false
In Anbetracht der Antwort von Larsks können Sie es mit einem einzigen Befehl mit "--force" zum Laufen bringen:
quelle
Error: Will not add file alias 'MyFile' ('myfile' already exists in index)
Manchmal möchten Sie die Groß- und Kleinschreibung vieler Dateinamen in einem Dateisystem ändern, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird (z. B. unter OS X oder Windows). Doing
git mv
Befehle werden schnell ermüden. Um die Sache ein bisschen einfacher zu machen, mache ich Folgendes:git add . -A
, um alle Dateien zu entfernen.git add .
. Git sollte sehen, dass die Dateien umbenannt werden.Jetzt können Sie ein Commit durchführen, das besagt, dass Sie die Großschreibung des Dateinamens geändert haben.
quelle
Bei Dateinamen unter OS X wird nicht zwischen Groß- und Kleinschreibung unterschieden (standardmäßig). Dies ist eher ein Betriebssystemproblem als ein Git-Problem. Wenn Sie die Datei entfernen und lesen, sollten Sie das erhalten, was Sie möchten, oder es in etwas anderes umbenennen und dann wieder umbenennen.
quelle
git clone
das Repo auch auf einem Linux-System ausführen, die Dateien umbenennen und sie nur für diese Situation festschreiben (wenn Sie ein Linux-System zur Hand haben).git rm --cached fileorfolder
die Datei oder den Ordner aus git entfernen, ohne die Datei oder den Ordner aus dem Dateisystem zu entfernen. Dann können Sie einfach die Datei oder den Ordner mit erneut hinzufügengit add fileorfolder
.Setzen Sie
ignorecase
auffalse
in git ConfigIm ursprünglichen Beitrag geht es um "Ändern der Großschreibung von Dateinamen in Git":
Wenn Sie versuchen, die Großschreibung eines Dateinamens in Ihrem Projekt zu ändern, müssen Sie das Umbenennen von Git nicht erzwingen . IMO, ich würde lieber die Großschreibung von meiner IDE / meinem Editor ändern und sicherstellen, dass ich Git richtig konfiguriere, um die Umbenennung zu übernehmen.
Standardmäßig ist eine Git-Vorlage so eingestellt, dass Groß- und Kleinschreibung ignoriert wird (Git-Groß- und Kleinschreibung wird nicht berücksichtigt). Um zu überprüfen, ob Sie über die Standardvorlage verfügen, rufen Sie
--get
den Wert für einen angegebenen Schlüssel ab. Verwenden Sie--local
und--global
, um Git anzuzeigen, ob ein Konfigurationsschlüsselwert aus Ihrer lokalen oder globalen Git-Repository-Konfiguration abgerufen werden soll. Wenn Sie beispielsweise Ihren globalen Schlüssel nachschlagen möchtencore.ignorecase
:Wenn dies zurückkehrt
true
, stellen Sie sicher, dass Folgendes festgelegt ist:(Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum globalen Ändern verfügen.) Und dort haben Sie es; Jetzt würde Ihre Git-Installation Groß- und Kleinschreibung nicht ignorieren und sie als Änderungen behandeln.
Wenn Sie an mehrsprachigen Projekten arbeiten und der Meinung sind, dass nicht alle Projekte von Git zwischen Groß- und Kleinschreibung unterschieden werden sollten, aktualisieren Sie einfach die lokale
core.ignorecase
Datei.quelle
git config --global --get core.ignorecase
nichts zurückkommt. Ist estrue
? denn nachdem ich es eingestellt habe,false
wird false zurückgegeben (Windows 10)git mv
). Ich gehe auch davon aus, dass es standardmäßig als wahr angesehen wird (dh es wird der Fall ignoriert). Entweder das, oder es entspricht der Richtlinie des Betriebssystems für das Dateinamengehäuse.Sie können das Verzeichnis ".git" öffnen und dann die Datei "config" bearbeiten. Setzen Sie unter "[core]" set "ignorecase = true" und Sie sind fertig;)
quelle
So löschen Sie
git mv
Dateien unter macOS in Kleinbuchstaben:Alle Dateien in einem Ordner werden in Kleinbuchstaben geschrieben.
quelle
Dieses Python-Snippet enthält
git mv --force
alle Dateien in einem Verzeichnis in Kleinbuchstaben. Zum Beispiel foo / Bar.js wird sich foo / bar.js übergit mv foo/Bar.js foo/bar.js --force
.Ändern Sie es nach Ihren Wünschen. Ich dachte nur, ich würde teilen :)
quelle
Arbeitsbeispiel:
quelle