====== Änderungen untersuchen ======
===== Änderungen zwischen Commits ansehen =====
Wir arbeiten weiter in unserem Beispielrepository für das Tagebuch. Zunächst stellen wir sicher, dass wir den aktuellen ''main''-Branch ausgecheckt haben:
max@pc:tagebuch$ git checkout main
Bereits auf 'main'
max@pc:tagebuch$ git lg
* d7aaac4 - (HEAD -> main) Mittagessen hinzugefügt (vor 6 Tagen)
* adc15c2 - fruehstueck.txt geändert (vor 6 Tagen)
* f9353d6 - Frühstück in Datei 'fruehstueck.txt' hinzugefügt (vor 6 Tagen)
* 28ec5a7 - Erster Commit: aufstehen.txt angelegt (vor 6 Tagen)
==== Vom HEAD zurück blicken ====
Wenn man vom HEAD zurückblicken möchte, kann man folgenden Befehl verwenden ''git diff HEAD~1''. Das bedeutet: "Zeige mir alle Unterschiede im Verzeichnis zwischen dem Commit, auf den HEAD gerade zeigt und dem vorigen Commit" - die Ausgabe ist zunächst etwas gewöhnungsbedürftig:
max@pc:tagebuch$ git diff HEAD~1
diff --git a/mittagessen.txt b/mittagessen.txt
new file mode 100644
index 0000000..2d3882c
--- /dev/null
+++ b/mittagessen.txt
@@ -0,0 +1,2 @@
+Suppe.
+Pommes rot weiß.
Die Ausgabe sagt uns, dass in der Datei ''mittagessen.txt'' neu angelegt wurde und in diese zwei Zeilen eingefügt wurden: ''Suppe.'' und ''Pommes rot weiß.''
Man kann sehr einfach auch zwei Commits in die Vergangenheit blicken: ''git diff HEAD~2'':
max@pc:tagebuch$ git diff HEAD~2
diff --git a/fruehstueck.txt b/fruehstueck.txt
index 56d9aeb..9be69b6 100644
--- a/fruehstueck.txt
+++ b/fruehstueck.txt
@@ -1,3 +1,4 @@
Müsli
Kaffee
Brot
+Schokolade
diff --git a/mittagessen.txt b/mittagessen.txt
new file mode 100644
index 0000000..2d3882c
--- /dev/null
+++ b/mittagessen.txt
@@ -0,0 +1,2 @@
+Suppe.
+Pommes rot weiß.
Die Ausgabe sagt uns, dass in **allen** Commits bis zum aktuellen HEAD die folgenden Änderungen im Repo stattgefunden haben:
* Es wurde eine neue Datei angelegt - ''mittagessen.txt''
* Dort wurde die beiden Zeilen ''Suppe.'' und ''Pommes rot weiß.'' eingefügt.
* In der zuvor bereits vorhandenen Datei ''fruehstueck.txt'' wurde nach den drei schon vorhandenen Zeilen eine weitere Zeile ''Schokolade'' eingefügt.
----
{{:aufgabe.png?nolink |}}
=== (A1) ===
* Untersuche die Unterschiede in deinem Repo zwischen dem HEAD auf main und einigen vorigen Commits
* Erstelle auf dem main Branch einen weiteren Commit, bei dem du in einer deiner Dateien eine Zeile entfernst. Untersuche, wie die Ausgabe von ''git diff'' jetzt aussieht - woran erkennt man, dass die Zeile entfernt wurde?
* Erstelle einen Commit, bei dem du eine Datei entfernst (''git rm '', dann einen Commit erstellen). Untersuche, wie die Ausgabe von ''git diff'' jetzt aussieht
==== Bessere Ausgabe ====
Die Ausgabe von ''git diff'' erfolgt als "Diff", bei umfangreicheren Änderungen ist es nicht so einfach, das ohne weitere Hilfsmittel zu durchschauen. Git bietet die Möglichkeit, für die Anzeige der Unterschiede ein externes Progamm zu konfigurieren. Im weiteren wird das mit dem Programm ''meld'' demonstriert.
git config diff.tool meld
git config diff.tool.prompt false
Führt man nun den Befehl ''git difftool HEAD~1'' aus, öffnet sich das Programm ''meld'' und zeigt die Änderungen an - das sieht dann z.B. so aus:
{{ :faecher:informatik:oberstufe:git:diff:meld_2.png |}}
Hier sieht man die beiden Versionen nebeneinander und bekommt direkt dargestellt was sich verändert hat.
----
{{:aufgabe.png?nolink |}}
=== (A2) ===
* Konfiguriere dein git-Repo für die Verwendung eines grafischen Diff-Tools
* Schau dich in deinem Repo um und schaue dir die Änderungen in deinem Repo mit dem grafischen Tool an.
==== Noch einfacher: Die Git-GUI ====
Noch komfortabler funktioniert die Git-GUI. Unter Window kann man diese über die rechte Maustaste öffnen, unter Linux kannst du auf der Konsole einfach den Befehl ''gitg'' eingeben, dann sieht das ganze so aus - probiers aus!
{{ :faecher:informatik:oberstufe:git:diff:2024-10-07_20-54.png |}}