Eines der essentiellsten Konzepte von Git ist jenes der staging area. Seine Verwendung kann deine Arbeitsweise fundamental zum Besseren ändern! Lass uns darüber schauen, wie er tatsächlich funktioniert und was du für die Verwendung brauchst.
Bei den meisten anderen Versionskontrollsystemen gibt es zwei Orte für das Speichern der Daten: Deine Arbeitskopie (die Verzeichnisse/Dateien, die du gegenwärtige benutzt) und der Datenspeicher (wo die Versionskontrolle entscheidet wie deine Änderung verpackt und gespeichert werden). In Git gibt es eine dritte Option: Die staging area oder Index. Es ist quasi ein Ladedock, wo du entscheidest welche Änderungen verschifft werden.
Die essentielle Entkopplung von Arbeitsverzeichnis und was Git speichert, erlaubt den Entwicklern ihre Commits so zusammenzubauen, wie sie es wünschen und nicht auf eine Art und Weise, wie es das VCS von ihnen erwartet. Du erlangst viel mehr Flexibilität und Kontrolle dadurch, dass Git eine Ebene zwischen den tatsächlich gespeicherten Daten verwendet.
Die Verwendung des Index geht recht einfach mit den Kommandos git add
und git commit
vonstatten. Du fügst Dateien zum Index hinzu (add
) und sobald du zufrieden mit deinen Änderungen bist, stellst du sie bereit (commit
):
Sobald sie im Repository sind, kannst du sie an einen entfernten Ort pushen (push
), mit anderen Branches zusammenfügen (merge
) und vieles mehr. Es gibt auch Aktionen, die auf der staging area selbst ausgeführt werden können, zum Beispiel Änderungen temporär lagern.
Lass uns durch ein einfaches Beispiel für die Verwendung der staging area gehen. Ich habe gerade ein paar Änderungen vorgenommen:
$ git status On branch master Changed but not updated: (use "git add <file>..." to update what will be committed) modified: README.md modified: about.html Untracked files: (use "git add <file>..." to include in what will be committed) help.txt no changes added to commit (use "git add" and/or "git commit -a")
In dem Beispiel haben wir 2 Dateien, über die Git Bescheid weiß, und eine Datei, die es nicht kennt: help.txt. Wenn wir ein git add .
ausführen, werden alle Änderungen oder jede neue Datei, die nicht getracked wird, hinzugefügt. Das add
Kommando speichert die Daten noch nicht, es platziert sie lediglich auf das Ladedock, bereit für den nächsten git commit
Laster, der sie mitnimmt.
$ git add . $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.md modified: about.html new file: help.txt
Wie der Prompt sagt, kannst du git reset HEAD <file>
benutzen, um Dateien zurück in ihren modifizierten Zustand zu versetzen. Auf diese Weise kannst du genau das bereitstellen, was du möchtest. Du kannst sogar spezifische Zeilen in Dateien committen, wenn du wirklich willst. Solltest du dich darüber wundern, wie Daten zurück gesetzt werden können, dazu gibt es auch einen eigenen Tip. Von hier aus befördert ein git commit
alle Dateien in Gits Datenspeicher und du bist fertig.
$ git commit -m "Adding stuff" Created commit e793200: Adding stuff 2 files changed, 3 insertions(+), 0 deletions(-) create mode 100644 help.txt
Solltest du nach mehr Informationen zum Index suchen, schaue dir diese fantastischen Beiträge an:
Solltest du weitere Quellen kennen, die den Index erklären, lass sie uns in den Kommentaren wissen.