So prüfen Sie, ob eine Datei Teil eines bestimmten Zweigs ist

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 bestimmte Datei in einem bestimmten Git-Zweig vorhanden ist, ohne in diesen Zweig wechseln zu müssen. Wir werden zwei Hauptmethoden untersuchen: die Verwendung des Befehls git ls-tree, um den Inhalt des Baumobjekts eines Zweigs zu untersuchen, und die Nutzung des Befehls git log, um die Commit-Historie einer Datei in einem bestimmten Zweig anzuzeigen. Sie werden diese Techniken üben, indem Sie einen neuen Zweig erstellen, eine Datei hinzufügen und dann deren Vorhandensein aus einem anderen Zweig überprüfen. Abschließend wenden Sie diese Methoden an, um auf Dateien in anderen Zweigen zu testen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/branch -.-> lab-560029{{"So prüfen Sie, ob eine Datei Teil eines bestimmten Zweigs ist"}} git/checkout -.-> lab-560029{{"So prüfen Sie, ob eine Datei Teil eines bestimmten Zweigs ist"}} git/log -.-> lab-560029{{"So prüfen Sie, ob eine Datei Teil eines bestimmten Zweigs ist"}} end

Ausführen von git ls-tree für Zweig und Datei

In diesem Schritt werden wir untersuchen, wie Sie den Inhalt eines bestimmten Zweigs und einer bestimmten Datei in Ihrem Git-Repository mithilfe des Befehls git ls-tree anzeigen können. Dieser Befehl ist nützlich, um den Zustand Ihres Projekts zu einem bestimmten Zeitpunkt in der Geschichte oder in einem anderen Zweig zu untersuchen, ohne tatsächlich in diesen Zweig zu wechseln.

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

cd ~/project/my-time-machine

Jetzt erstellen wir einen neuen Zweig namens feature-branch und wechseln in diesen. Wir werden dort eine neue Datei hinzufügen.

git branch feature-branch
git checkout feature-branch
echo "This is a new feature." > feature.txt
git add feature.txt
git commit -m "Add new feature file"

Nach dem Commit sollten Sie eine Ausgabe ähnlich dieser sehen:

[feature-branch a1b2c3d] Add new feature file
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Jetzt haben wir einen neuen Zweig feature-branch mit einer Datei feature.txt, die auf dem master-Zweig nicht existiert.

Wechseln wir zurück zum master-Zweig.

git checkout master

Sie sollten eine Ausgabe sehen, die angibt, dass Sie den Zweig gewechselt haben:

Switched to branch 'master'

Beachten Sie, dass die Datei feature.txt in Ihrem aktuellen Verzeichnis nicht mehr sichtbar ist, da Sie sich auf dem master-Zweig befinden.

Jetzt verwenden wir git ls-tree, um den Inhalt des feature-branch und speziell die Datei feature.txt vom master-Zweig aus anzuzeigen, ohne zurückzuwechseln.

Die grundlegende Syntax für git ls-tree lautet git ls-tree <tree-ish> <path>. <tree-ish> kann ein Zweigname, ein Commit-Hash oder ein Tag sein. <path> ist der Pfad zur Datei oder zum Verzeichnis, das Sie untersuchen möchten.

Um den Inhalt des Root-Verzeichnisses von feature-branch anzuzeigen, können Sie Folgendes verwenden:

git ls-tree feature-branch

Sie sollten eine Ausgabe ähnlich dieser sehen, die die Dateien im Root von feature-branch anzeigt:

100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9	feature.txt
100644 blob f9e8d7c6b5a4938271605f4e3d2c1b0a98765432	message.txt

Diese Ausgabe zeigt den Dateimodus, den Objekttyp (blob für Datei), den Objekthash und den Dateinamen.

Um die Details einer bestimmten Datei, wie feature.txt, auf dem feature-branch anzuzeigen, können Sie Folgendes verwenden:

git ls-tree feature-branch feature.txt

Sie sollten eine Ausgabe ähnlich dieser speziell für feature.txt sehen:

100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9	feature.txt

Dieser Befehl ermöglicht es Ihnen, in andere Zweige oder vergangene Commits zu schauen, um den Zustand bestimmter Dateien zu sehen, ohne Ihr aktuelles Arbeitsverzeichnis zu ändern. Dies ist unglaublich nützlich, um Dateien zwischen Zweigen zu vergleichen oder historische Versionen zu untersuchen.

Verwenden von git log <Zweig> -- <Datei>

In diesem Schritt lernen wir, wie man die Commit-Historie einer bestimmten Datei in einem bestimmten Zweig mithilfe des git log-Befehls mit dem ---Trennzeichen anzeigt. Dies ist unglaublich nützlich, wenn man sehen möchte, wie sich eine einzelne Datei im Laufe der Zeit verändert hat, unabhängig davon, auf welchem Zweig man sich derzeit befindet.

Stellen Sie sicher, dass Sie sich immer noch in Ihrem Projektverzeichnis befinden:

cd ~/project/my-time-machine

Wir befinden uns derzeit auf dem master-Zweig. Schauen wir uns die Commit-Historie für die Datei message.txt auf diesem Zweig an.

git log -- message.txt

Sie sollten die Commit-Historie für message.txt sehen. Da wir nur einen Commit gemacht haben, der diese Datei auf dem master-Zweig enthält (den Initial-Commit), wird die Ausgabe ähnlich wie folgt aussehen:

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

    Send a message to the future

Drücken Sie q, um die Log-Ansicht zu verlassen.

Jetzt schauen wir uns die Commit-Historie für die Datei feature.txt auf dem feature-branch an. Denken Sie daran, dass wir uns immer noch auf dem master-Zweig befinden, aber wir können die Historie einer Datei auf einem anderen Zweig untersuchen.

Die Syntax lautet git log <Zweigname> -- <Dateipfad>.

git log feature-branch -- feature.txt

Sie sollten die Commit-Historie für feature.txt auf dem feature-branch sehen. Dies zeigt den Commit, in dem Sie die Datei feature.txt hinzugefügt haben:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature-branch)
Author: Your Name <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Add new feature file

Drücken Sie q, um die Log-Ansicht zu verlassen.

Das ---Trennzeichen ist wichtig. Es teilt Git mit, dass die folgenden Argumente Dateipfade und keine Zweige oder andere Referenzen sind. Dies ermöglicht es Ihnen, genau anzugeben, welche Dateihistorie Sie sehen möchten.

Dieser Befehl ist unglaublich leistungsstark, um die Entwicklung bestimmter Teile Ihres Projekts zu verstehen. Wenn Sie herausfinden möchten, wann eine bestimmte Codezeile hinzugefügt oder geändert wurde, ist git log -- <Datei> Ihr bester Freund. Sie können sogar Optionen wie -p hinzufügen, um die tatsächlichen Änderungen in jedem Commit für diese Datei zu sehen.

Testen von Dateien in anderen Zweigen

In diesem Schritt üben wir das Zugreifen auf und Anzeigen des Inhalts von Dateien aus verschiedenen Zweigen, ohne unseren aktuellen Zweig zu wechseln. Dies ist eine sehr häufige Aufgabe, wenn Sie Versionen einer Datei vergleichen oder etwas in einem anderen Zweig schnell überprüfen müssen.

Stellen Sie sicher, dass Sie sich in Ihrem Projektverzeichnis befinden:

cd ~/project/my-time-machine

Wir befinden uns derzeit auf dem master-Zweig. Lassen Sie uns dies bestätigen:

git branch

Die Ausgabe sollte * master anzeigen, was bedeutet, dass Sie sich auf dem master-Zweig befinden.

  feature-branch
* master

Jetzt versuchen wir, den Inhalt von feature.txt anzuzeigen, das nur auf dem feature-branch existiert. Hierfür können wir den git show-Befehl verwenden. Der git show-Befehl wird normalerweise verwendet, um verschiedene Arten von Objekten in Git anzuzeigen, einschließlich des Inhalts von Dateien bei einem bestimmten Commit oder in einem bestimmten Zweig.

Die Syntax, um eine Datei aus einem anderen Zweig anzuzeigen, lautet git show <Zweigname>:<Dateipfad>.

git show feature-branch:feature.txt

Sie sollten den Inhalt der Datei feature.txt aus dem feature-branch sehen:

This is a new feature.

Das ist sehr praktisch! Sie mussten nicht den Zweig wechseln, um den Dateiinhalt anzuzeigen.

Jetzt versuchen wir, den Inhalt von message.txt aus dem feature-branch anzuzeigen. Diese Datei existiert in beiden Zweigen, aber ihr Inhalt könnte unterschiedlich sein, wenn wir sie auf dem feature-branch geändert haben. In unserem Fall ist der Inhalt derselbe wie auf dem master.

git show feature-branch:message.txt

Sie sollten den Inhalt von message.txt aus dem feature-branch sehen:

Hello, Future Me

Dies zeigt, wie Sie git show verwenden können, um auf Dateien aus jedem Zweig oder Commit in Ihrem Repository zuzugreifen. Dies ist eine leistungsstarke Technik zum Vergleichen von Dateiversionen, zum Debuggen von Problemen, indem Sie vergangene Zustände betrachten, oder einfach zum Betrachten von Code in anderen Zweigen, ohne Ihre aktuelle Arbeit zu stören.

Die Fähigkeit, schnell Dateien in anderen Zweigen oder Commits zu überprüfen, ist eine wertvolle Fähigkeit, die Ihnen Zeit spart und Ihnen hilft, die Geschichte und den Zustand Ihres Projekts effektiver zu verstehen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob eine Datei Teil eines bestimmten Zweigs in Git ist. Wir haben begonnen, indem wir den git ls-tree-Befehl verwendet haben, um den Inhalt eines Zweigs und einer bestimmten Datei innerhalb dieses Zweigs anzuzeigen, ohne den Zweig auschecken zu müssen. Dies beinhaltete das Erstellen eines neuen Zweigs, das Hinzufügen einer Datei zu ihm, das Zurückwechseln zum ursprünglichen Zweig und dann das Verwenden von git ls-tree mit dem Zweignamen und dem Dateipfad, um die Existenz und die Details der Datei auf dem anderen Zweig zu untersuchen. Diese Methode bietet eine schnelle Möglichkeit, zu sehen, ob eine Datei auf einem anderen Zweig existiert und welchen zugehörigen Blob-Hash sie hat.