Varianten git diff¶
Besonders für Trainees, die bereits mit diversen Software- und Versions- Mangements gearbeitet haben ist der Begriff diff bekannt. Allerdings haben wir bei Git durch die unterschiedlichen Orte im Lebenszyklus von Dateien und Ordnern eines Git-Projekts sehr unterschiedliche Abweichungen und Git verwaltet immer das komplette Projekt und nicht einzelne Dateien für diese Vergleiche! Screenshot aus Link training.galaxyproject.org - Version Control with Git
Training galaxyproject.org (/training-material/topics/data-science/images/bash-git/git-staging-area.svg)¶
Es ergeben sich drei mögliche Varianten ein und derselben Datei.
Variante 01: git diff - Working Directory vs. Index (Staging Area)
Den Unterschied zwischen der Version im Working Directory und
dem Index (Staging Area) erhalten Sie mit git diff.
$ git diff
diff --git a/testdatei.txt b/testdatei.txt
index c3e4471..701f3e0 100644
--- a/testdatei.txt
+++ b/testdatei.txt
@@ -1,4 +1,5 @@
Zeile 1
Zeile 2
Diese Zeile geändert, nach dem ersten Commit für diese und andere Datei!
+Diese Zeile nach dem add-en der Datei, also dem Hinzufügen zum Index!
Wichtig
Wollen wir also den wirklich letzten Bearbeitungszustand der Datei
in das Repository committen, dann müssen wir hier erst einmal
mit git add testdatei.txt den Index aktualisieren und danach
mit git commit -m '...' in das Git Repository einchecken.
Als Hilfe für das Gesamtverständnis: denken Sie immer daran, dass Sie bei Git nicht einzelne Dateien einchecken, sondern immer komplette Zustände (Snapshots).
Variante 02: git diff --staged - Index (Staging Area) vs. Git Repo
Wenn man stattdessen den Unterschied zwischen dem Index (Staging Area)
und dem .git Repository herausfinden möchte -
also die Unterschiede, die in den nächsten Commit einfließen würden -
dann hilft git diff --staged.
$ git diff --staged
diff --git a/testdatei.txt b/testdatei.txt
index 2fddc57..c3e4471 100644
--- a/testdatei.txt
+++ b/testdatei.txt
@@ -1,3 +1,4 @@
Zeile 1
Zeile 2
+Diese Zeile geändert, nach dem ersten Commit für diese und andere Datei!
Hinweis
Beim git diff sind Parameter --staged und --cached Synonyme!
Und die letzte Variante folgt zum Schluss:
Variante 03: git diff HEAD ... - Workspace vs. Git Repo
Befehl: git diff HEAD ...
Nochmals zur Erinnerung: oft der Übersichtlichkeit halber nur eine Datei mit Änderungen! Git interessiert sich aber immer für das gesamte Projekt in den drei Zuständen: Working Directory - Index (Staging Area) - Git Repository!
Für diverse andere Übungen bitte alle Dateien zum Index hinzufügen, damit wieder ein sauberer Git Status herrscht.