So prüfen Sie, ob eine Datei in der Git-Historie umbenannt wurde

GitGitBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie effektiv die Historie einer Datei in Git verfolgen können, auch nachdem sie umbenannt wurde. Wir werden den leistungsstarken Befehl git log --follow untersuchen, um die Historie einer Datei auch über Namensänderungen hinweg zu verfolgen.

Sie werden auch lernen, wie Sie git diff --name-status verwenden, um den Status von Dateien zwischen Commits zu untersuchen. Abschließend werden wir diese Techniken auf Dateien anwenden, die nicht umbenannt wurden, um den Unterschied in der Ausgabe zu verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560030{{"So prüfen Sie, ob eine Datei in der Git-Historie umbenannt wurde"}} git/status -.-> lab-560030{{"So prüfen Sie, ob eine Datei in der Git-Historie umbenannt wurde"}} git/commit -.-> lab-560030{{"So prüfen Sie, ob eine Datei in der Git-Historie umbenannt wurde"}} git/diff -.-> lab-560030{{"So prüfen Sie, ob eine Datei in der Git-Historie umbenannt wurde"}} git/log -.-> lab-560030{{"So prüfen Sie, ob eine Datei in der Git-Historie umbenannt wurde"}} end

Ausführen von git log --follow -- Datei

In diesem Schritt werden wir untersuchen, wie man die Historie einer bestimmten Datei verfolgen kann, auch wenn sie umbenannt wurde. Hier kommt der Befehl git log --follow zum Einsatz.

Zunächst stellen wir sicher, dass wir uns im Projektverzeichnis befinden.

cd ~/project/my-time-machine

Jetzt erstellen wir eine neue Datei und fügen etwas Inhalt hinzu.

echo "This is the original content." > original_file.txt

Fügen Sie diese Datei hinzu und committen Sie sie.

git add original_file.txt
git commit -m "Add original file"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master 1a2b3c4] Add original file
 1 file changed, 1 insertion(+)
 create mode 100644 original_file.txt

Jetzt benennen wir die Datei um.

git mv original_file.txt renamed_file.txt

Prüfen Sie den Status, um die Änderung zu sehen.

git status

Sie sollten etwas wie Folgendes sehen:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed: original_file.txt -> renamed_file.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

Committen Sie die Umbenennung.

git commit -m "Rename original file"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master 5d6e7f8] Rename original file
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename original_file.txt -> renamed_file.txt (100%)

Jetzt verwenden wir git log, um die Historie der umbenannten Datei anzuzeigen.

git log renamed_file.txt

Dies zeigt nur den Commit an, in dem die Datei umbenannt wurde. Um die Historie vor der Umbenennung zu sehen, müssen wir die Option --follow verwenden.

git log --follow renamed_file.txt

Dieser Befehl zeigt Ihnen die Historie der Datei, wobei Namensänderungen berücksichtigt werden. Sie sollten sowohl den Commit "Rename original file" als auch den Commit "Add original file" sehen.

Der Befehl git log --follow ist unerlässlich, wenn Sie die vollständige Historie einer Datei verstehen müssen, die in Ihrem Repository verschoben oder umbenannt wurde. Er hilft Ihnen, die Entwicklung der Datei über verschiedene Commits hinweg nachzuverfolgen, unabhängig von ihrem aktuellen Namen.

Verwenden von git diff --name-status

In diesem Schritt lernen wir, wie man git diff --name-status verwendet, um eine Zusammenfassung der Änderungen zwischen Commits zu sehen, wobei wir uns speziell auf den Status und die Namen der geänderten Dateien konzentrieren.

Zunächst stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden:

cd ~/project/my-time-machine

Machen wir eine weitere Änderung an unserer renamed_file.txt.

echo "Adding a new line." >> renamed_file.txt

Jetzt schauen wir uns den Status an.

git status

Sie sollten sehen, dass renamed_file.txt geändert wurde.

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   renamed_file.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Fügen Sie die Änderung in den Staging-Bereich (Index) ein.

git add renamed_file.txt

Jetzt verwenden wir git diff --name-status, um die Änderungen zwischen dem letzten Commit und den in den Staging-Bereich übernommenen Änderungen zu sehen.

git diff --name-status --cached

Die Option --cached teilt git diff mit, die in den Staging-Bereich übernommenen Änderungen (den Index) mit dem letzten Commit (HEAD) zu vergleichen.

Sie sollten eine Ausgabe ähnlich dieser sehen:

M       renamed_file.txt

Die Ausgabe M renamed_file.txt zeigt an, dass die Datei renamed_file.txt Modifiziert wurde.

Jetzt committen wir diese Änderung.

git commit -m "Add new line to renamed file"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master 9h0i1j2] Add new line to renamed file
 1 file changed, 1 insertion(+)

Der Befehl git diff --name-status ist sehr nützlich, um einen schnellen Überblick darüber zu erhalten, welche Art von Änderungen (hinzugefügt, modifiziert, gelöscht, umbenannt, kopiert) zwischen verschiedenen Punkten in Ihrer Git-Historie aufgetreten sind, ohne den vollständigen Inhalt der Änderungen anzuzeigen. Dies ist besonders hilfreich, wenn Sie Änderungen vor dem Committen überprüfen oder Zweige vergleichen.

Testen von nicht umbenannten Dateien

In diesem Schritt werden wir beobachten, wie sich git log --follow bei Dateien verhält, die nicht umbenannt wurden. Dies wird Ihnen helfen, zu verstehen, wann die Option --follow notwendig ist.

Zunächst stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden:

cd ~/project/my-time-machine

Wir haben bereits renamed_file.txt und message.txt in unserem Repository. Fügen wir etwas Inhalt zu message.txt hinzu.

echo "This is a message." >> message.txt

Prüfen Sie den Status.

git status

Sie sollten sehen, dass message.txt geändert wurde und renamed_file.txt aktuell ist.

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Fügen Sie die Änderung an message.txt hinzu und committen Sie sie.

git add message.txt
git commit -m "Add content to message file"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master 3k4l5m6] Add content to message file
 1 file changed, 1 insertion(+)

Jetzt verwenden wir git log für message.txt.

git log message.txt

Dies zeigt Ihnen die Historie von message.txt. Sie sollten den Commit "Add content to message file" und den ersten Commit sehen, in dem message.txt erstellt wurde (aus dem ersten Lab).

Jetzt versuchen wir git log --follow für message.txt.

git log --follow message.txt

Sie werden feststellen, dass die Ausgabe die gleiche wie bei git log message.txt ist. Dies liegt daran, dass message.txt nicht umbenannt oder verschoben wurde. Die Option --follow ist speziell dafür ausgelegt, die Dateihistorie über Namensänderungen hinweg zu verfolgen. Für Dateien, die nicht umbenannt wurden, reicht git log aus.

Dieser Schritt zeigt, dass git log --follow zwar leistungsstark für das Verfolgen umbenannter Dateien ist, aber für Dateien, die ihren Namen beibehalten, der Standardbefehl git log die vollständige Historie liefert. Das Verständnis dieses Unterschieds hilft Ihnen, den richtigen Befehl für die Aufgabe auszuwählen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Historie einer Datei in Git verfolgt, auch nachdem sie umbenannt wurde. Wir begannen damit, eine Datei zu erstellen, hinzuzufügen und zu committen, benannten sie dann mit git mv um und committen die Umbenennung. Anschließend haben wir gezeigt, dass ein einfacher git log für den neuen Dateinamen nur die Historie ab der Umbenennung anzeigt.

Der wichtigste Punkt war die Verwendung des Befehls git log --follow <filename>. Diese leistungsstarke Option ermöglicht es Git, die Historie einer Datei über Namensänderungen hinweg zu verfolgen und bietet so einen vollständigen Überblick über ihre Entwicklung von der Erstellung bis zum aktuellen Zustand. Dies ist entscheidend, um den gesamten Kontext der Änderungen an einer Datei innerhalb der Projektgeschichte zu verstehen.