Erinnern Sie sich an eines: Git verfolgt nur den Inhalt der Datei.
Aus dem Abschnitt zum Verschieben von Dateien von Pro Git book v2:
Im Gegensatz zu vielen anderen VCS-Systemen verfolgt Git die Verschiebung von Dateien nicht explizit. Wenn Sie eine Datei in Git umbenennen, werden keine Metadaten in Git gespeichert, die Sie darüber informieren, dass Sie die Datei umbenannt haben. Allerdings ist Git ziemlich klug, das hinterher zu verstehen
Bewegen und Umbenennen ist in Git dasselbe.
So erkennt Git die Bewegungs / umbenennen automatisch nur unter der Prämisse funktioniert, dass diese Dateien nicht verändert werden .
Git tut diese Dinge, wenn Sie nur eine Datei verschieben / umbenennen:
- Eine nachverfolgte Datei wird gelöscht, git erhält den SHA-1 des Dateiinhalts. Angenommen, der Wert ist
abc
. - Eine untrack-Datei wird hinzugefügt. Git berechnet den SHA-1 des Dateiinhalts. Angenommen, der Wert ist
abc
ebenfalls. - Wenn Sie in diesem Moment einen Commit ausführen, wird git feststellen, dass sie denselben SHA-1-Wert haben, und behandeln sie dann als Umbenennung.
Angenommen, Sie haben einige verfolgte Dateien geändert und sie auch in einen anderen Ordner verschoben. Dann kann git sie beim Commit leider nicht automatisch umbenennen / verschieben.
Wenn Sie wirklich möchten, dass git das Umbenennen / Bewegen automatisch verfolgt, müssen Sie Folgendes tun :
Stellen Sie sicher, dass Sie die Datei (en) NICHT modifizieren und Dateien nur in einem Commit umbenennen / verschieben.
Wenn Sie die Datei ändern und gleichzeitig verschieben möchten und git sie mit TortoiseGit als Umbenennen / Verschieben erkennen möchte, dann in Ihrem Fall:
- Klicken Sie mit der rechten Maustaste auf diese Datei und klicken Sie auf das
TortoiseGit -> Rename...
Kontextmenü. - Präfix
new_folder\
vor dem Dateinamen, siehe: - verpflichten
Hinweis: Sie müssen die Dateien einzeln umbenennen. Angenommen, es gibt viel zu tun. Umbenennen Sie also nur die Datei.
Hinweis2: Wenn Sie viele Dateien ändern, kann git nicht feststellen, dass es sich um ein Umbenennen / Verschieben handelt.