Erinnern Sie sich an eine Sache: Git verfolgt nur den Inhalt der Datei.
Von Dateien verschieben Abschnitt 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
Verschieben und Umbenennen ist in Git dasselbe.
So, Git erkennt das Verschieben / Umbenennen automatisch nur unter der Voraussetzung, 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
, auch.
- Wenn Sie zu diesem Zeitpunkt einen Commit ausführen, wird git feststellen, dass sie denselben SHA-1-Wert haben, und behandeln Sie sie dann als Umbenennung.
Angenommen, Sie haben einige verfolgte Dateien geändert und auch in andere Ordner verschoben. Dann kann git sie beim Commit leider nicht automatisch umbenennen / verschieben.
Wenn Sie wirklich möchten, dass git automatisch umbenannt / verschoben wird, du musst es 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 Umbenennung / Verschiebung erkennen möchte, dann in Ihrem Fall:
- Klicken Sie mit der rechten Maustaste auf diese Datei und klicken Sie auf
TortoiseGit -> Rename...
Element des Kontextmenüs.
- Präfix
new_folder\
zum 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 ändern viel In der Akte kann git nicht feststellen, dass es sich um eine Umbenennung / Verschiebung handelt.
Von dem TortoiseGit-Dokumentation :
quelle
Git wird dies am Back-End erledigen, nachdem Sie das Commit ausgeführt haben. Während Sie die nicht festgeschriebenen Dateien bearbeiten, werden zunächst die erstellten & amp; Löschvorgänge werden als separate Aktionen ausgeführt. Nach dem Festschreiben wird jedoch versucht, die Löschvorgänge mit create aufzulösen, um festzustellen, ob es sich tatsächlich nur um einen Dateiverschiebevorgang handelt. Dies können Sie im Commit-Protokoll mit den Meldungen "Alte Datei == & gt; Neue Datei" nachvollziehen, wenn git eine Verschiebung der Datei findet.
Alternativ können Sie git mv verwenden, wenn Sie sich dadurch sicherer fühlen https://git-scm.com/docs/git-mv
quelle