Ich finde git schwer zu verstehen, da ich die Bedeutung der für die Aktionen verwendeten Wörter nicht finden konnte. Ich habe das Wörterbuch auf die Bedeutung von "stage" überprüft, und keine der Bedeutungen war mit Versionskontrollkonzepten verbunden.
Was bedeutet "Bühne" im Kontext von Git?
git
version-control
000
quelle
quelle
git add file.ext
für eine bestimmte Datei zu tun , odergit add .
alle modifizierten und nicht verfolgten Dateien zu beeinflussen. Dateien, die auf diese Weise hinzugefügt wurden, werden als "bereitgestellt" bezeichnet und beim nächsten "Festschreiben" berücksichtigt. Das Commit ist eine Momentaufnahme Ihrer Arbeit, die Sie zB mit erstellt habengit commit -m "I wrote something"
.Antworten:
Eine Datei zu inszenieren bedeutet einfach, sie für ein Commit vorzubereiten. Git, mit seinem Index können Sie nur bestimmte Teile der Änderungen festschreiben, die Sie seit dem letzten Festschreiben vorgenommen haben. Angenommen, Sie arbeiten an zwei Funktionen - eine ist fertig und eine muss noch bearbeitet werden. Sie möchten einen Commit durchführen und nach Hause gehen (endlich um 5 Uhr!), Möchten aber die Teile des zweiten Features nicht festschreiben, was noch nicht geschehen ist. Sie inszenieren die Teile, von denen Sie wissen, dass sie zum ersten Feature gehören, und legen fest. Jetzt ist Ihr Commit Ihr Projekt, bei dem die erste Funktion ausgeführt wird, während die zweite in Ihrem Arbeitsverzeichnis noch in Bearbeitung ist.
quelle
Da es bisher von allen auf "formale" Weise beantwortet wurde, lassen Sie mich dies mit Alternativen tun, um das Lernen mit der Kraft von Metaphern zu verbessern.
Der Staging-Bereich sieht also so aus:
Es ist magisch !
quelle
Das Staging ist ein Schritt vor dem Festschreibungsprozess in git. Das heißt, ein Commit in git wird in zwei Schritten ausgeführt: Staging und tatsächliches Commit.
Solange sich ein Änderungssatz im Staging-Bereich befindet, können Sie ihn mit git nach Belieben bearbeiten (Staging-Dateien durch andere Versionen von Staging-Dateien ersetzen, Änderungen aus dem Staging entfernen usw.).
Defekte Metapherzeit:
Stellen Sie sich ein Szenario vor, in dem Sie die Mover anrufen, um Ihre Sachen von Ihrer alten Wohnung in Ihre neue Wohnung zu bringen. Bevor Sie das tun, werden Sie Ihre Sachen durchgehen, entscheiden, was Sie mitnehmen und was Sie wegwerfen, es in Säcke packen und es im Hauptflur lassen. Die Mover kommen einfach, holen die (bereits gepackten) Taschen vom Flur und transportieren sie. In diesem Beispiel wird alles inszeniert, bis die Mover Ihre Sachen erhalten: Sie entscheiden, was wohin geht, wie Sie es verpacken und so weiter (z. B. können Sie entscheiden, dass die Hälfte Ihrer Sachen weggeworfen wird, bevor die Mover überhaupt dort ankommen - das ist ein Teil der Inszenierung).
Aus technischer Sicht unterstützt das Staging auch Transaktions-Commits, indem alle Vorgänge in "Was kann fehlschlagen (Staging)" und "Was kann nicht fehlschlagen (Commit)" aufgeteilt werden:
Das Commit in git wird transaktional implementiert, nachdem das Staging erfolgreich war. Einige Schritte in der Bereitstellung können fehlschlagen (z. B. müssen Sie eine Festschreibung durchführen, aber Ihre Festplatte ist zu 99,9999% voll, und git hat keinen Speicherplatz für eine Festschreibung). Dies schlägt beim Staging fehl (Ihr Repository wird nicht durch ein teilweises Commit beschädigt) und der Staging-Prozess hat keine Auswirkungen auf Ihren Commit-Verlauf (Ihr Repository wird im Fehlerfall nicht beschädigt).
quelle
Wenn Sie eine Datei bereitstellen, bereiten Sie sie auf ein Commit vor. Da git diese Aktion der Benutzersteuerung zur Verfügung stellt, können Sie teilweise Festschreibungen erstellen oder eine Datei ändern, bereitstellen, erneut ändern und nur die ursprüngliche Änderung festschreiben oder wiederherstellen.
Mit Staging können Sie genauer steuern, wie Sie sich der Versionskontrolle nähern möchten.
quelle
Hier kommt der Name für "stage", um die anderen hervorragenden Antworten zu ergänzen:
Im Englischen kann "inszenieren" bedeuten
(von http://oxforddictionaries.com/definition/stage )
Der Name "Staging" für das Git-Feature leitet sich aus dieser Bedeutung ab: Beim Staging bereiten Sie ein Commit vor und organisieren es. Natürlich ist ein Commit nicht ganz dasselbe wie eine Aufführung, aber es ist ein wichtiges Ereignis in einem VCS :-).
quelle
Bei den meisten anderen Versionskontrollsystemen gibt es zwei Speicherorte für Daten: Ihre Arbeitskopie (die Ordner / Dateien, die Sie derzeit verwenden) und den Datenspeicher (in dem die Versionskontrolle über das Packen und Speichern Ihrer Änderungen entscheidet). In Git gibt es eine dritte Option: den Staging-Bereich (oder Index). Es ist im Grunde eine Laderampe, an der Sie feststellen können, welche Änderungen versandt werden.
Quelle: http://gitready.com/beginner/2009/01/18/the-staging-area.html
quelle
Die "Phase" ist ein technisch erforderlicher Zwischenschritt beim Einchecken einer Datei, nämlich das Sammeln der Änderungen, die dem Repository hinzugefügt werden sollen. Die Autoren von Git haben sich dafür entschieden, diesen Schritt sichtbar und dauerhaft zu machen, wenn andere VCS ihn zu einem vorübergehenden Bestandteil des Festschreibungsprozesses machen. Es ist also nur eine Option, die Git gibt, weil es kann, warum also nicht?
So wie ich es sehe, ist die Hauptsache, die Ihnen die git "stage" gibt, dass andere VCS es nicht können, um eine Datei zu überprüfen. Es ist praktisch ein unbenanntes, unkommentiertes lokales Commit, das Ihnen einen Zwischenschritt zwischen dem Abschluss Ihrer gesamten Arbeit und dem dauerhaften Commit des Repositorys und dem Speichern von nichts in Ihrem lokalen Repository bietet.
Nehmen wir zum Beispiel an, Sie haben ein Feature teilweise fertiggestellt. Es ist in einem stabilen Zustand, besteht alle Tests und könnte in Produktion gehen, aber Sie müssen noch mehr daran arbeiten. Sie können alle Änderungen vornehmen und dann an der Funktion weiterarbeiten.
Später haben Sie die Möglichkeit, Ihre bereitgestellten Daten einfach festzuschreiben (und diese Festschreibung an das Remote-Repository zu übertragen) oder Ihre neuen Änderungen in Ihren Bereitstellungsbereich einzufügen und diese dann auf einmal festzuschreiben oder nur Ihre neuen Änderungen rückgängig zu machen und Stellen Sie in Ihrem Arbeitsverzeichnis den Zustand wieder her, in dem Sie Ihre Änderungen vorgenommen haben.
Es ist durchaus möglich, den Staging-Bereich praktisch komplett zu überspringen und die
-a
Option zu verwenden,git commit
wenn Sie den Staging-Bereich nicht als hilfreich empfinden. Viele Leute überspringen Staging und GUI-Tools ermöglichen dies normalerweise auch.quelle
Angenommen, ich entwickle eine Anmeldefunktion und benötige 5 aufeinanderfolgende Schritte, um diese abzuschließen. Hier hilft Ihnen die Inszenierung, an Schritten zu arbeiten, wie
sie in Schritt 1 ausgeführt wurden.
getan mit Schritt 2, jetzt sind Schritt 1 und Schritt 2 richtig.
Verwirren Sie Schritt 3. Kein Problem. Auschecken Sie den letzten bereitgestellten Schritt, der Schritt 2 ist. Wenn
Sie alle 5 Schritte ausgeführt haben, bedeutet dies, dass die Funktion abgeschlossen ist.
quelle