Git – Staging
In der letzten Lektion haben wir eine Änderung an unserer Datei lerneprogrammieren.html gemacht. Den Status des Arbeitsverzeichnisses haben wir ebenfalls geprüft. Was jetzt noch fehlt, ist die Änderung der Datei zu "stagen".
Änderungen hinzufügen
Jetzt teilen wir Git mit, dass die Änderungen "gestaged" werden sollen. Danach prüfen wir den Status:
git add lerneprogrammieren.html git status
Der Output sieht ungefähr so aus:
$ git add lerneprogrammieren.html $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: lerneprogrammieren.html #
Änderungen an der lerneprogrammieren.html sind jetzt gestaged worden. Das bedeutet, dass Git von der Änderung weiß, aber sie noch nicht dauerhaft im Repository ist. Der nächste Commit wird ab jetzt die Staging-Änderungen enthalten.
Solltest du dich entscheiden, die Änderung nicht zu committen, wird dich der Befehl git status daran erinnern, dass du den Befehl git reset verwenden kannst, um diese Änderungen rückgängig zu machen.
Was ist Staging in Git?
Ein Staging-Schritt in Git erlaubt es dir, weiterhin Änderungen im Arbeitsverzeichnis vorzunehmen. Wenn du soweit bist mit der Versionskontrolle zu interagieren, kannst du deine Änderungen in kleinen Commits erstellen.
Lass uns das an einem Beispiel verdeutlichen, damit das Staging klar wird.
Simples Staging-Beispiel:
Angenommen, du hast Änderungen an drei Dateiengemacht z.B. test1.html, test2.html und test3.html.
Jetzt musst du alle Änderungen committen. Die Änderungen an test1.html sowie test2.html stehen im Zusammenhang, daher machst du daraus einen Commit. Jedoch stehen die Änderungen an test3.html nicht logisch mit den ersten beiden Dateien zusammen. Daher entscheidest du dich für test3.html einen separaten Commit zu machen.
So würde das in Git aussehen - erster Commit für test1.html und test2.html:
git add test1.html
git add test2.html
git commit -m "Änderungen für test1 und test2"
Zweiter Commit für test3.html
git add test3.html
git commit -m "Änderung für test3, die sonst keinen Bezug hat"
Durch die Trennung von Staging und Commit kannst du ganz einfach anpassen, was in einen Commit geht. Das ist besonders bei großen Commits mit vielen Dateiänderungen nützlich, da du die Commits so "thematisch" oder nach "Relevanz" trennen kannst.