Ich verstehe die Frage so: "Wie kann man Git dazu bringen, das Löschen einer alten Datei und das Anlegen einer neuen Datei als eine Dateiverschiebung zu erkennen".
Ja, im Arbeitsverzeichnis, wenn Sie eine alte Datei löschen und eine alte Datei einfügen, git status
wird sagen " deleted: old_file
" und " Untracked files: ... new_file
"
Im Staging-Index bzw. der Staging-Ebene wird das Hinzufügen und Entfernen von Dateien mit Git jedoch als Dateiverschiebung erkannt. Um dies zu erreichen, geben Sie folgende Befehle ein, vorausgesetzt, Sie haben die Löschung und Erstellung mit Ihrem Betriebssystem durchgeführt:
git add new_file
git rm old_file
Wenn der Inhalt der Datei zu 50% oder mehr übereinstimmt, wird git status
sollten Sie erhalten:
renamed: old_file -> new_file
3 Stimmen
Für eine bestimmte Datei
old_file.txt
entoncesgit mv old_file.txt new_file.txt
ist gleichbedeutend mitgit rm --cached old_file.txt
,mv old_file.txt new_file.txt
,git add new_file.txt
.6 Stimmen
Jarl: Nein, ist es nicht. Wenn es auch Änderungen innerhalb der Datei gibt,
git mv
werden sie nicht in den Cache aufgenommen, sonderngit add
wird. Ich ziehe es vor, die Datei zurück zu verschieben, damit ich diegit mv
entoncesgit add -p
um meinen Änderungssatz zu überprüfen.0 Stimmen
Bitte prüfen Sie mein Skript github.com/Deathangel908/python-tricks/blob/master/
0 Stimmen
Mögliches Duplikat von Ist es möglich, Dateien in Git zu verschieben/umzubenennen und ihren Verlauf beizubehalten?
2 Stimmen
Git hat sich in den letzten 8 Jahren verbessert, wenn es nur um eine Datei geht, ist die beste Antwort stackoverflow.com/a/433142/459 nichts getan aber Sie können folgen stackoverflow.com/a/1541072/459 um aus einem rm/add einen mv/modify-Status zu machen.
0 Stimmen
Mit Git 2.18 (Q2 2018),
git status
sollte Ihnen nun die Umbenennungen anzeigen (statt Dateien zu löschen/hinzufügen). Siehe " Wie man Git mitteilt, dass es sich um dasselbe Verzeichnis handelt, nur mit einem anderen Namen ".0 Stimmen
Einziger Haken: Die Originaldatei darf nicht mehr existieren! Ein SQL-Vergleichstool, das ich verwende, behält die Originaldatei bei, macht sie aber 0 Byte groß. Dann sieht Git das offensichtlich nicht als Umbenennung an