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)

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.