Test mit von LFS verfolgten Dateien
In diesem letzten Schritt fügen wir die von LFS verfolgte Datei in die Git-Staging-Area ein und committen sie. Dies zeigt, wie Git LFS die Datei anders behandelt als normale Dateien.
Zunächst stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden:
cd ~/project/my-time-machine
Wir haben bereits die Datei large_image.png
erstellt und in den vorherigen Schritten Git LFS so konfiguriert, dass es .png
-Dateien verfolgt. Jetzt fügen wir die Datei mit git add
in die Staging-Area ein:
git add large_image.png
Dieser Befehl bringt die Datei für den nächsten Commit in die Staging-Area. Git LFS unterbricht diesen Vorgang für large_image.png
, da sie dem Muster in .gitattributes
entspricht. Anstatt den gesamten Dateiinhalt in den Git-Index hinzuzufügen, fügt Git LFS eine kleine "Zeigerdatei" hinzu.
Lassen Sie uns den Status überprüfen, um die in die Staging-Area eingestellte Datei zu sehen:
git status
Sie sollten eine Ausgabe sehen, die anzeigt, dass large_image.png
eine neue Datei ist, die bereit zum Committen ist:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitattributes
new file: large_image.png
Beachten Sie, dass .gitattributes
ebenfalls in die Staging-Area eingestellt ist, da wir es in Schritt 1 geändert haben.
Jetzt committen wir die Änderungen:
git commit -m "Add LFS tracked image placeholder"
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
[master (root-commit) abcdefg] Add LFS tracked image placeholder
2 files changed, X insertions(+)
create mode 100644 .gitattributes
create mode 100644 large_image.png
Die Commit-Nachricht bestätigt, dass sowohl .gitattributes
als auch large_image.png
committet wurden. Der eigentliche Inhalt von large_image.png
wird jedoch nicht direkt im Git-Commit gespeichert. Stattdessen speichert der Commit die kleine Zeigerdatei, und der Inhalt der großen Datei wird von Git LFS verwaltet.
Um den Unterschied zu sehen, schauen wir uns den Inhalt der Datei an, wie er in Git gespeichert ist, mit git show
. Dieser Befehl zeigt den Inhalt einer Datei bei einem bestimmten Commit an.
git show HEAD:large_image.png
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
version https://git-lfs.github.com/spec/v1
oid sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
size 31
Dies ist der Inhalt der Zeigerdatei, nicht der eigentliche Text "This is a large image file placeholder.". Dies zeigt, dass Git einen Verweis auf die große Datei speichert, während Git LFS den eigentlichen Dateiinhalt verwaltet.
Dies ist das Kernkonzept von Git LFS: Das Haupt-Git-Repository wird leichtgewichtig gehalten, indem nur Zeiger auf große Dateien gespeichert werden, während der Inhalt der großen Dateien separat gespeichert wird.