So prüfen Sie, ob ein Verzeichnis von Git verfolgt wird

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 werden wir lernen, wie man feststellt, ob ein Verzeichnis von Git verfolgt wird. Wir werden den Inhalt eines Git-Repositorys mithilfe des Befehls git ls-tree untersuchen, um die Dateien und Verzeichnisse bei einem bestimmten Commit zu inspizieren.

Darüber hinaus werden wir den Befehl git status nutzen, um den aktuellen Verfolgungsstatus der Dateien in unserem Repository zu überprüfen und zu verstehen, wie Git leere Verzeichnisse behandelt.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/SetupandConfigGroup -.-> git/git("Show Version") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/git -.-> lab-560020{{"So prüfen Sie, ob ein Verzeichnis von Git verfolgt wird"}} git/status -.-> lab-560020{{"So prüfen Sie, ob ein Verzeichnis von Git verfolgt wird"}} end

Ausführen von git ls-tree für ein Verzeichnis

In diesem Schritt werden wir den Inhalt unseres Git-Repositorys mithilfe des Befehls git ls-tree untersuchen. Dieser Befehl ermöglicht es uns, den Inhalt eines Tree-Objekts anzuzeigen, das den Zustand eines Verzeichnisses bei einem bestimmten Commit darstellt.

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

cd ~/project/my-time-machine

Nun verwenden wir git ls-tree, um den Inhalt des neuesten Commits anzuzeigen. Wir verwenden HEAD, um auf den neuesten Commit zu verweisen:

git ls-tree HEAD

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9	message.txt

Lassen Sie uns diese Ausgabe analysieren:

  • 100644: Dies ist der Dateimodus, der angibt, dass es sich um eine normale Datei handelt.
  • blob: Dies gibt den Objekttyp an. Ein blob-Objekt speichert den Inhalt einer Datei.
  • a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9: Dies ist der eindeutige Bezeichner (SHA-1-Hash) des blob-Objekts, das den Inhalt von message.txt speichert. Ihr Hash wird unterschiedlich sein.
  • message.txt: Dies ist der Name der Datei.

Der Befehl git ls-tree ist nützlich, um den Inhalt eines bestimmten Commits zu untersuchen, ohne den gesamten Commit auschecken zu müssen. Er zeigt Ihnen die Dateien und Verzeichnisse, die zu diesem Zeitpunkt von Git verfolgt wurden.

Stellen Sie sich vor, Sie schauen in eine bestimmte Zeitkapsel (Commit), um genau zu sehen, welche Dateien enthalten waren und wie ihre eindeutigen Fingerabdrücke (Blob-Hashes) aussehen. Dies ist eine leistungsstarke Methode, um die Struktur und den Inhalt der Historie Ihres Projekts zu verstehen.

Verwenden von git status zur Überprüfung der Verfolgung

In den vorherigen Schritten haben wir eine Datei erstellt und sie in unser Git-Repository committet. Jetzt verwenden wir erneut den Befehl git status, um den aktuellen Zustand unseres Repositorys zu sehen und zu bestätigen, dass unsere Datei verfolgt wird.

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

cd ~/project/my-time-machine

Jetzt führen Sie den Befehl git status aus:

git status

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

On branch master
nothing to commit, working tree clean

Diese Ausgabe sagt uns einige wichtige Dinge:

  • On branch master: Wir befinden uns derzeit auf dem master-Branch, der die Hauptzeitlinie unseres Projekts darstellt.
  • nothing to commit, working tree clean: Dies ist der wichtigste Teil. Es bedeutet, dass es keine Änderungen in unserem Arbeitsverzeichnis gibt, die noch nicht committet wurden. Git verfolgt alle Dateien, die verfolgt werden sollen, und es gibt keine neuen oder geänderten Dateien, die hinzugefügt oder committet werden müssen.

Dies ist der gewünschte Zustand, wenn Sie mit den Änderungen fertig sind und sie committet haben. Es bestätigt, dass Git den aktuellen Zustand Ihres Projekts kennt und dass alles in Ihrem Repository auf dem neuesten Stand ist.

Der Vergleich dieser Ausgabe mit der git status-Ausgabe, die wir vor dem Erstellen und Committen von message.txt gesehen haben, zeigt den Unterschied zwischen einem leeren Repository, einem Repository mit nicht verfolgten Dateien und einem sauberen Repository mit verfolgten Dateien.

Das Verständnis von git status ist von entscheidender Bedeutung, da es Ihr Hauptwerkzeug ist, um zu wissen, was in Ihrem Repository passiert und welche Aktionen Sie ausführen müssen (z. B. Dateien hinzufügen oder committen).

Testen von leeren Verzeichnissen

In diesem Schritt werden wir untersuchen, wie Git leere Verzeichnisse behandelt. Dies ist ein häufiger Grund für Verwirrung bei Anfängern, da sich Git bei Verzeichnissen anders verhält als bei Dateien.

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

cd ~/project/my-time-machine

Jetzt erstellen wir ein neues, leeres Verzeichnis in unserem Projekt:

mkdir empty-folder

Wir haben das Verzeichnis erstellt. Jetzt überprüfen wir den Status unseres Repositorys mit git status:

git status

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

On branch master
nothing to commit, working tree clean

Beachten Sie, dass Git empty-folder nicht als nicht verfolgtes Verzeichnis meldet. Dies liegt daran, dass Git Dateiinhalte verfolgt, nicht die Verzeichnisse selbst. Ein leeres Verzeichnis hat keinen Inhalt, der verfolgt werden könnte.

Dies ist ein wichtiges Konzept in Git. Wenn Sie ein leeres Verzeichnis in Ihr Repository aufnehmen müssen, ist die übliche Lösung, eine Platzhalterdatei darin zu platzieren. Eine gängige Praxis ist es, eine Datei namens .gitkeep zu erstellen (obwohl der Name egal ist, es ist nur eine Konvention).

Erstellen wir eine .gitkeep-Datei in empty-folder:

touch empty-folder/.gitkeep

Jetzt überprüfen wir erneut den git status:

git status

Diesmal sollten Sie Folgendes sehen:

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)
	untracked files present (use "git add" to track)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	empty-folder/

Jetzt erkennt Git empty-folder/, weil es eine Datei (.gitkeep) enthält, die verfolgt werden kann.

Dies zeigt, dass Git die Anwesenheit von Dateien in Verzeichnissen verfolgt, nicht die Verzeichnisse selbst. Um ein Verzeichnis in die Historie Ihres Repositorys aufzunehmen, muss es mindestens eine verfolgte Datei enthalten.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob ein Verzeichnis und sein Inhalt von Git verfolgt werden. Wir haben den Befehl git ls-tree HEAD verwendet, um den Inhalt des neuesten Commits zu untersuchen. Dabei haben wir verstanden, dass dieser Befehl die verfolgten Dateien sowie die zugehörigen Blob-Objekte (Blob-Objekte sind in Git die Repräsentationen von Dateiinhalten) und ihre Hash-Werte anzeigt. Dieser Befehl liefert eine Momentaufnahme des Zustands des Repositorys bei einem bestimmten Commit.

Wir haben auch den Befehl git status genutzt, um den aktuellen Verfolgungsstatus der Dateien im Repository zu überprüfen und so zu bestätigen, dass die committeten Dateien tatsächlich von Git verfolgt werden. Schließlich haben wir untersucht, wie Git leere Verzeichnisse behandelt. Dabei haben wir festgestellt, dass Git leere Verzeichnisse nicht direkt verfolgt, sondern stattdessen die Dateien darin.