git mv

Grundlegende Snapshots

Verschiebt oder benennt eine Datei um


Der Befehl 'git mv' benennt eine verfolgte Datei um oder verschiebt sie und merkt die Änderung in einem Schritt vor. Das entspricht dem Umbenennen von Hand plus git add auf den alten und neuen Namen. Git speichert keine Umbenennungen: es erkennt sie durch Inhaltsvergleich, daher kann git log --follow die Historie der Datei über die Umbenennung hinweg zeigen.

Syntax

git mv [-v] [-f] [-n] [-k] <source> <destination>
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Beispiele

Eine Datei umbenennen

git mv app.js cart.js

Benennt die Datei um und merkt die Umbenennung vor.


In einen Ordner verschieben

git mv cart.js src/cart.js

Verschiebt die Datei in einen vorhandenen Ordner.


Historie nach einer Umbenennung

git log --follow cart.js

Folgt der Historie zurück über die Umbenennung.

Workflow-Beispiele

1
git mv app.js cart.js

Umbenennen und vormerken

2
git status

Zeigt "renamed: app.js -> cart.js"

3
git commit -m "Rename app.js to cart.js"

Commit

Fehlerbehebung

fatal: destination exists

Ursache: Eine Datei mit dem neuen Namen existiert bereits

Wähle einen anderen Namen oder überschreibe sie mit -f

fatal: not under version control

Ursache: Die Quelldatei ist unverfolgt

Benenne sie normal um, oder führe zuerst git add aus

Tipps & Stolperfallen

Best Practices

  • ✓Committe eine Umbenennung getrennt von großen Änderungen, damit Git sie als Umbenennung erkennt.
  • ✓Nutze git log --follow <file>, um die Historie über Umbenennungen hinweg zu sehen.

Häufige Fehler

  • ✗Im Dateimanager umbenennen und nur die neue Datei committen — die alte wird weiter verfolgt.
  • ✗Unter Windows oder macOS nur die Groß-/Kleinschreibung ohne git mv ändern, was Git eventuell nicht bemerkt.
  • ✗Eine Datei im selben Commit umbenennen und stark bearbeiten, sodass Git die Umbenennung nicht mehr erkennt.

FAQ

A:

Nicht direkt: es vergleicht den Inhalt zwischen Commits und erkennt die Umbenennung.

A:

Ja: git mv src lib benennt den Ordner und jede Datei darin um.