So prüfen Sie, ob eine Datei in einem Git-Commit hinzugefügt 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 prüfen können, ob eine Datei in einem bestimmten Git-Commit hinzugefügt wurde. Sie werden verschiedene Git-Befehle untersuchen, um Commit-Details zu überprüfen und neu hinzugefügte Dateien zu identifizieren.

Sie beginnen damit, git show --name-status zu verwenden, um eine knappe Zusammenfassung der Änderungen in einem Commit anzuzeigen. Dabei suchen Sie speziell nach dem Status 'A', der eine hinzugefügte Datei anzeigt. Anschließend lernen Sie, wie Sie git diff-tree mit relevanten Optionen verwenden, um ein ähnliches Ergebnis zu erzielen. Dies ist besonders nützlich für Skripte und fortgeschrittene Szenarien. Abschließend lernen Sie, wie Sie zwischen modifizierten und hinzugefügten Dateien im Commit-Verlauf unterscheiden können.


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-560024{{"So prüfen Sie, ob eine Datei in einem Git-Commit hinzugefügt wurde"}} git/status -.-> lab-560024{{"So prüfen Sie, ob eine Datei in einem Git-Commit hinzugefügt wurde"}} git/commit -.-> lab-560024{{"So prüfen Sie, ob eine Datei in einem Git-Commit hinzugefügt wurde"}} git/diff -.-> lab-560024{{"So prüfen Sie, ob eine Datei in einem Git-Commit hinzugefügt wurde"}} git/log -.-> lab-560024{{"So prüfen Sie, ob eine Datei in einem Git-Commit hinzugefügt wurde"}} end

Führen Sie git show --name-status aus

In diesem Schritt werden wir untersuchen, wie Sie die Details eines bestimmten Commits anzeigen können, einschließlich der Informationen, welche Dateien geändert wurden und wie. Wir verwenden den git show-Befehl mit der Option --name-status.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis my-time-machine befinden:

cd ~/project/my-time-machine

Nun verwenden wir git show, um uns den Commit anzusehen, den wir im vorherigen Lab gemacht haben. Wir können das Alias HEAD verwenden, um auf den neuesten Commit zu verweisen:

git show --name-status HEAD

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

A       message.txt

Lassen Sie uns diese Ausgabe analysieren:

  • Der erste Teil zeigt die Commit-Details an, ähnlich wie bei git log.
  • Die Zeile A message.txt ist hier der wichtige Teil.
    • A steht für "Added" (Hinzugefügt). Dies sagt uns, dass die Datei message.txt in diesem Commit hinzugefügt wurde.
    • message.txt ist der Name der betroffenen Datei.

Die Option --name-status ist sehr nützlich, da sie eine knappe Zusammenfassung der Änderungen bietet, die durch einen Commit eingeführt wurden. Sie zeigt nur die Namen der Dateien und ihren Status (Hinzugefügt, Modifiziert, Gelöscht usw.). Dies ist schneller als das Betrachten der vollständigen Differenz, wenn Sie nur wissen möchten, welche Dateien betroffen sind.

Das Verständnis, wie man Commits untersucht, ist entscheidend für die Navigation durch die Historie Ihres Projekts und das Verständnis, wie es sich entwickelt hat.

Verwenden von git diff-tree für hinzugefügte Dateien

In diesem Schritt verwenden wir einen anderen Befehl, git diff-tree, um die Änderungen anzuzeigen, die durch einen Commit eingeführt wurden. Während git show hervorragend geeignet ist, um die vollständigen Commit-Details und die Differenz anzuzeigen, ist git diff-tree nützlich für Skripte und fortgeschrittene Szenarien.

Stellen Sie sicher, dass Sie sich immer noch im Verzeichnis ~/project/my-time-machine befinden.

Wir verwenden git diff-tree mit den Optionen -r (rekursiv) und --name-status, gefolgt von der Commit-Hash-Zahl. Sie können die Commit-Hash-Zahl aus der Ausgabe von git log oder git show erhalten. Für unseren ersten Commit können wir auch HEAD verwenden.

git diff-tree -r --name-status HEAD

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 A       message.txt

Schauen wir uns die Ausgabe an:

  • a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 ist die Commit-Hash-Zahl.
  • A gibt den Status der Dateiänderung an (Hinzugefügt).
  • message.txt ist der Name der Datei.

Diese Ausgabe ähnelt stark dem --name-status-Teil von git show. Bei einem einfachen Commit wie unserem ersten (der nur eine Datei hinzugefügt hat) ist die Ausgabe fast identisch. Allerdings ist git diff-tree flexibler und kann verwendet werden, um verschiedene Bäume (Snapshots) in Ihrem Repository zu vergleichen, nicht nur Commits.

Für den Moment ist der wichtigste Punkt, dass sowohl git show --name-status als auch git diff-tree -r --name-status Ihnen zeigen können, welche Dateien in einem bestimmten Commit geändert wurden und wie. Dies ist eine grundlegende Fähigkeit, um die Historie Ihres Projekts zu verstehen.

Testen von modifizierten vs. hinzugefügten Dateien

In den vorherigen Schritten haben wir gesehen, wie git show --name-status und git diff-tree --name-status ein A für eine hinzugefügte Datei anzeigen. Jetzt schauen wir uns an, wie sie sich verhalten, wenn eine Datei modifiziert wird.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden.

Fügen wir eine weitere Zeile zu unserer message.txt-Datei hinzu:

echo "Hello again, Future Me" >> message.txt

Der >>-Operator hängt den Text an die bestehende Datei an.

Jetzt überprüfen wir den Status unseres Repositorys:

git status

Sie sollten eine Ausgabe sehen, die darauf hinweist, dass message.txt modifiziert 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:   message.txt

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

Git erkennt korrekt, dass die Datei modifiziert wurde.

Jetzt stellen wir diese Änderung in den Staging-Bereich:

git add message.txt

Und überprüfen den Status erneut:

git status

Die Ausgabe sollte nun anzeigen, dass die Änderung im Staging-Bereich ist:

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

Beachten Sie, dass Git diese Änderung als modifizierte Datei verfolgt, obwohl wir Inhalt hinzugefügt haben, da die Datei bereits im vorherigen Commit existierte.

Schließlich committen wir diese Änderung:

git commit -m "Add another message to the future"

Sie sollten eine Ausgabe sehen, die den Commit bestätigt:

[master a1b2c3d] Add another message to the future
 1 file changed, 1 insertion(+)

Jetzt haben wir einen neuen Commit. Verwenden wir git show --name-status für den neuesten Commit (HEAD), um den Status anzuzeigen:

git show --name-status HEAD

Die Ausgabe wird ähnlich der folgenden sein:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Add another message to the future

M       message.txt

Beachten Sie das M vor message.txt. Dies zeigt an, dass die Datei in diesem Commit modifiziert wurde.

In ähnlicher Weise werden Sie auch den M-Status sehen, wenn Sie git diff-tree -r --name-status HEAD verwenden.

Diese Unterscheidung zwischen A (Hinzugefügt) und M (Modifiziert) ist wichtig, um die Historie Ihrer Dateien in Git zu verstehen. A bedeutet, dass die Datei in diesem Commit erstellt wurde, während M bedeutet, dass die Datei bereits existierte und ihr Inhalt geändert wurde.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob eine Datei in einem Git-Commit hinzugefügt wurde. Zunächst haben wir uns den Befehl git show --name-status angeschaut, der eine knappe Zusammenfassung der Änderungen in einem Commit liefert, einschließlich des Status (z. B. 'A' für hinzugefügt) und des Namens der betroffenen Dateien. Dies ist eine schnelle Möglichkeit, zu sehen, welche Dateien an einem Commit beteiligt waren, ohne die vollständige Differenz anzuzeigen.

Anschließend haben wir den Befehl git diff-tree mit den Optionen -r und --name-status als alternative Methode zur Untersuchung von Commit-Änderungen vorgestellt, die besonders nützlich für Skripte und fortgeschrittene Szenarien ist. Obwohl die vollständigen Details dieses Schritts nicht angegeben wurden, deutet die Einführung darauf hin, dass es darum geht, weiter zu untersuchen, wie man hinzugefügte Dateien innerhalb eines Commits mit einem anderen Git-Befehl identifiziert.