Wie ändert man die Großschreibung von Dateinamen in Git?

Lesezeit: 8 Minuten

Benutzeravatar von knpwrs
knpwrs

Ich versuche, eine Datei umzubenennen, um eine andere Großschreibung als zuvor zu haben:

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 das einfache alte umzubenennen mv auch, aber Git übernimmt die Umbenennung nicht (als rename oder als neue nicht getrackte Datei).

Wie kann ich eine Datei so ändern, dass sie eine andere Großschreibung desselben Namens hat? Ich verwende Mac OS X v10.7.3 (Lion) mit Git 1.7.9.1 Z-Schale (zsch) 4.3.15.

  • Dies liegt daran, dass das osx-Dateisystem standardmäßig die Groß- und Kleinschreibung beibehält und die Groß-/Kleinschreibung nicht berücksichtigt. Sie können einfach in zwei Schritten vorgehen: git mv myfile foo; git mv foo MyFile

    – Tonio

    9. Mai 2012 um 20:51 Uhr

  • Habe es mit “git mv –force myfile MyFile” zum Laufen gebracht.

    – Marcello DeSales

    17. April 2013 um 22:29 Uhr

  • Betrüger von stackoverflow.com/questions/6899582/…

    – Jackocnr

    24. Juli 2013 um 10:52 Uhr

  • Ab Git 2.0.1 (Juni 2014), git mv hello.txt Hello.txt funktioniert auf Betriebssystemen, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird. Siehe meine Antwort unten

    – VonC

    27. Juli 2014 um 8:02 Uhr

  • Verknüpfen von stackoverflow.com/questions/1793735/…

    – Oleg Estechin

    7. April 2015 um 11:17 Uhr


Benutzeravatar von VonC
VonC

Ab Git 2.0.1 (25. Juni 2014), a git mv funktioniert nur auf einem Betriebssystem, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird.

Sehen baa37bf begehen von David Turner (dturner-tw).

mv: Umbenennung zulassen, um die Groß-/Kleinschreibung auf Dateisystemen zu korrigieren, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird

git mv hello.txt Hello.txt” bei einem Dateisystem, bei dem die Groß-/Kleinschreibung nicht beachtet wird, wird immer ausgelöst “destination already exists” Fehler, da sich diese beiden Namen aus Sicht des Dateisystems auf denselben Pfad beziehen und vom Benutzer die Eingabe von “--force” beim Korrigieren der Groß-/Kleinschreibung des im Index aufgezeichneten Pfads und beim nächsten Commit.

Erkennen Sie diesen Fall und lassen Sie ihn zu, ohne “--force“.

git mv hello.txt Hello.txt funktioniert einfach (nein --force nicht mehr erforderlich).


Die andere Alternative ist:

git config --global core.ignorecase false

Und benennen Sie die Datei direkt um; git hinzufügen und committen.

Es funktioniert in einem CMD. Es kann in einer Git-Bash-Sitzung (unter Windows) fehlschlagen (siehe Antwort von Louis-Caron).

Wie von Jaquinocode in den Kommentaren angegeben, wenn Ihr lokales Repository selbst diese Einstellung hat:

git config --local core.ignorecase false

  • FWIW hat dies unter Windows rückgängig gemacht oder nie funktioniert. Bin auf 2.15.1.windows.2 und muss immer noch –force verwenden

    – TTimo

    26. Dezember 2017 um 19:09 Uhr


  • @Adowrath Tolle Neuigkeiten!

    – VonC

    9. Juli 2018 um 9:15 Uhr

  • Funktioniert dies auch für die Großschreibung der Erweiterungen? Zum Beispiel, wenn der Dateiname image.TXT ist und ich ihn wie image.txt umbenennen möchte

    – Siluveru Kiran Kumar

    21. Juni 2019 um 5:14 Uhr

  • Damit dies unter Windows funktioniert, führen Sie diesen Befehl aus und git config core.ignorecase false

    – John Targaryen

    5. Mai 2020 um 11:13 Uhr

  • @jaquinocode Guter Punkt. Ich habe Ihren Kommentar zur besseren Sichtbarkeit in die Antwort aufgenommen.

    – VonC

    30. Dezember 2021 um 19:36 Uhr

Benutzeravatar von Marcello DeSales
Marcello DeSales

In Anbetracht der Antwort von larsks können Sie es mit einem einzigen Befehl zum Laufen bringen --force:

git mv --force myfile MyFile

  • Wenn Sie sich in einem Dateisystem befinden, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, und Sie einen schwerwiegenden Fehler “Ungültiges Argument” erhalten, versuchen Sie stattdessen diese Schritte: stackoverflow.com/questions/3011625/…

    – Levi

    1. Dezember 2013 um 19:10 Uhr

  • Während dies die richtige Antwort für den ersten Schritt ist, wie gehen Sie dann vor, um unter Mac OS X zu einem anderen Zweig zu wechseln, wenn der andere Zweig die alte Großschreibung hat. Ich erhalte einen ****-Fehler: Die folgenden nicht nachverfolgten Arbeitsbaumdateien würden beim Auschecken überschrieben: ****

    – TJChambers

    17. Januar 2014 um 2:06 Uhr


  • Dies ist beim Commit für mich unter Windows fehlgeschlagen: Error: Will not add file alias 'MyFile' ('myfile' already exists in index)

    – Orangenhund

    2. Februar 2016 um 11:57 Uhr


Benutzeravatar von MrHus
MrHus

Manchmal möchten Sie die Großschreibung vieler Dateinamen auf einem Dateisystem ändern, bei dem die Groß-/Kleinschreibung nicht beachtet wird (z. B. unter macOS oder Windows). Individuell machen git mv Befehle ermüden schnell. Um die Sache etwas einfacher zu machen, mache ich Folgendes:

  1. Verschieben Sie alle betroffenen Dateien außerhalb des Verzeichnisses beispielsweise auf den Desktop.
  2. Mach ein git add . -A um die Entfernung dieser Dateien zu inszenieren.
  3. Benennen Sie alle Dateien auf dem Desktop in die richtige Großschreibung um.
  4. Verschieben Sie alle Dateien zurück in das ursprüngliche Verzeichnis.
  5. Mach ein git add .. Git sollte sehen, dass die Dateien umbenannt wurden.

Jetzt können Sie einen Commit machen, der besagt, dass Sie die Groß- und Kleinschreibung des Dateinamens geändert haben.

  • Dies geht auf Kosten des gesamten Verlaufs in den Dateien, die Sie verschieben, oder? Ich vermute, dass git mv –force diesen Mangel nicht hat.

    – LOAS

    4. Januar 2018 um 9:21 Uhr

  • Nein, dies würde nicht den gesamten Verlauf entfernen. Beachten Sie, dass zwischen den beiden Hinzufügungen kein Commit stattfindet.

    – Michael L. Perry

    24. Januar 2019 um 22:15 Uhr

  • das ist wirklich was ich brauchte. gut gemacht. es sollte auch eine Antwort sein. Danke!

    – Mehmet Kurtipek

    22. Juni 2020 um 21:35 Uhr

  • Siehe auch die Antwort von @softarn, die einen praktischen Einzeiler bietet, um dies alles auf einmal zu tun 🙂

    – waldreich

    27. September 2021 um 10:00 Uhr

  • Der viel einfachere und weniger hackige Weg, dies zu tun, ist git rm -r --cached . + git add --all . wie in dieser Antwort erklärt, die eine Tonne mehr Upvotes verdient.

    – Inigo

    31. Januar um 1:57


Benutzeravatar von larsks
Larsen

Dateinamen unter OS X unterscheiden nicht zwischen Groß- und Kleinschreibung (standardmäßig). Dies ist eher ein Betriebssystemproblem als ein Git-Problem. Wenn Sie die Datei entfernen und neu lesen, sollten Sie das bekommen, was Sie wollen, oder sie in etwas anderes umbenennen und dann wieder umbenennen.

Benutzeravatar von Segmented
Segmentiert

Satz ignorecase Zu false in der Git-Konfiguration

Da es im ursprünglichen Beitrag um “Ändern der Großschreibung von Dateinamen in Git” geht:

Wenn Sie versuchen, die Groß-/Kleinschreibung eines Dateinamens in Ihrem Projekt zu ändern, müssen Sie dies nicht tun Gewalt Benennen Sie es von Git um. 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 case insensitive). Um zu überprüfen, ob Sie die Standardvorlage haben, verwenden Sie --get um den Wert für einen angegebenen Schlüssel abzurufen. Verwenden --local Und --global um Git anzugeben, ob ein Konfigurationsschlüsselwert aus Ihrer lokalen oder globalen Git-Repository-Konfiguration abgerufen werden soll. Als Beispiel, wenn Sie Ihren globalen Schlüssel nachschlagen möchten core.ignorecase (Wenn die Befehle nichts zurückgeben, müssen Sie wahrscheinlich mit voranstellen sudo):

git config --global --get core.ignorecase

Wenn dies zurückkehrt truestellen Sie sicher, dass Sie Folgendes festlegen:

git config --global core.ignorecase false

(Stellen Sie sicher, dass Sie die richtigen Berechtigungen haben, um global zu ändern.) Und da haben Sie es; Jetzt würde Ihre Git-Installation Großschreibungen nicht ignorieren und sie als Änderungen behandeln.

Als Vorschlag: Wenn Sie an mehrsprachigen Projekten arbeiten und der Meinung sind, dass nicht alle Projekte von Git als Groß-/Kleinschreibung behandelt werden sollten, aktualisieren Sie einfach die Datei local core.ignorecase Datei.

  • Und wenn git config --global --get core.ignorecase gibt nichts zurück. Ist es true?? denn nachdem ich es eingestellt habe false es gibt false zurück (Windows 10)

    – fralbo

    7. Januar 2017 um 10:47 Uhr

  • Und es scheint nicht wie erwartet zu funktionieren. Ich meine, der Desktop-Client sieht die Änderung, aber nach dem Festschreiben/Synchronisieren bleibt der Dateiname online unverändert!

    – fralbo

    7. Januar 2017 um 12:33 Uhr

  • Hat für mich funktioniert (und besser für mehrere Dateien als die Verwendung von git mv). Ich gehe auch davon aus, dass es standardmäßig als wahr gilt (dh es ignoriert die Groß- und Kleinschreibung). Entweder das, oder es entspricht der Richtlinie des Betriebssystems für die Groß- und Kleinschreibung von Dateinamen.

    – Jerry

    2. Dezember 2019 um 10:10 Uhr


  • Dies sollte die ausgewählte Antwort sein

    – Dave Everitt

    17. April 2020 um 16:00 Uhr

  • Das Ändern der globalen Einstellung funktioniert möglicherweise nicht, da die lokale Einstellung sie außer Kraft setzt. Wenn es bei Ihnen nicht funktioniert, überprüfen Sie beide.

    – Xcalibur

    6. November 2020 um 3:04 Uhr

Benutzeravatar von Peter Mortensen
Peter Mortensen

Sie können das „.git“-Verzeichnis öffnen und dann die „config“-Datei bearbeiten. Unter “[core]” set, set “ignorecase = true” und fertig 😉

  • Und wenn git config --global --get core.ignorecase gibt nichts zurück. Ist es true?? denn nachdem ich es eingestellt habe false es gibt false zurück (Windows 10)

    – fralbo

    7. Januar 2017 um 10:47 Uhr

  • Und es scheint nicht wie erwartet zu funktionieren. Ich meine, der Desktop-Client sieht die Änderung, aber nach dem Festschreiben/Synchronisieren bleibt der Dateiname online unverändert!

    – fralbo

    7. Januar 2017 um 12:33 Uhr

  • Hat für mich funktioniert (und besser für mehrere Dateien als die Verwendung von git mv). Ich gehe auch davon aus, dass es standardmäßig als wahr gilt (dh es ignoriert die Groß- und Kleinschreibung). Entweder das, oder es entspricht der Richtlinie des Betriebssystems für die Groß- und Kleinschreibung von Dateinamen.

    – Jerry

    2. Dezember 2019 um 10:10 Uhr


  • Dies sollte die ausgewählte Antwort sein

    – Dave Everitt

    17. April 2020 um 16:00 Uhr

  • Das Ändern der globalen Einstellung funktioniert möglicherweise nicht, da die lokale Einstellung sie außer Kraft setzt. Wenn es bei Ihnen nicht funktioniert, überprüfen Sie beide.

    – Xcalibur

    6. November 2020 um 3:04 Uhr

Masse git mv Dateien in Kleinbuchstaben unter macOS und git bash unter Windows:

for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done

Alle Dateien in einem Ordner werden in Kleinbuchstaben geschrieben.

  • Es funktioniert auch unter Windows in Git Bash. danke, dass du mir viel zeit gespart hast! 🙂

    – Vinzenz Gagnon

    16. März 2021 um 9:44 Uhr

  • @VincentGagnon freut mich zu hören! Die Antwort wurde mit diesen Informationen aktualisiert.

    – Weichgarn

    16. März 2021 um 9:57 Uhr

1447940cookie-checkWie ändert man die Großschreibung von Dateinamen in Git?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy