it-swarm.dev

Was bedeutet "Bühne" in Git?

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 "Stufe" überprüft und keine der Bedeutungen bezog sich auf Quellcodeverwaltungskonzepte.

Was bedeutet "Bühne" im Kontext von Git?

352
000

Um Bühne eine Datei ist einfach, um sie fein für ein Commit vorzubereiten. Mit Git können Sie mit seinem Index 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 ein Commit durchführen und nach Hause gehen (endlich 5 Uhr!), Möchten aber die Teile des zweiten Features nicht festschreiben, was noch nicht erfolgt ist. Sie inszenieren die Teile, von denen Sie wissen, dass sie zur ersten Funktion gehören, und legen fest. Jetzt ist Ihr Commit Ihr Projekt mit der ersten Funktion, während die zweite in Ihrem Arbeitsverzeichnis noch in Arbeit ist.

331
Rook

Da dies bisher von allen "formal" beantwortet wurde, möchte ich dies mit Alternativen tun, um das Lernen mit der Kraft von Metaphern zu verbessern.

Der Staging-Bereich ist also wie folgt:

  • ein Cache mit Dateien, die Sie festschreiben möchten
  • nicht eine Reihe von Rohren, sondern ein Muldenkipper, der bereit ist, die Arbeit, mit der Sie ihn laden, in das Endlager zu bringen
  • ein magischer Ort, an dem ausgewählte Dateien mit Ihrer Zauberei in Stein verwandelt werden und nach Belieben auf magische Weise zum Repository transportiert werden können
  • die gelbe Backsteinstraße, damit die Dateien problemlos in das Repository gelangen (oder abfallen, wenn Sie zurückkehren möchten)
  • der fiktive Ort am Seehafen, an dem Akten mit einem Paar Zementschuhen empfangen und dann in das Endlager Meer geworfen werden
  • am Empfangsschalter der Bibliothek legen Sie die Dateien dort ab, damit der Bibliothekar sie für die Ablage in der Bibliothek vorbereiten kann
  • eine Kiste, in die Sie Dinge legen, bevor Sie sie unter Ihr Bett schieben. In Ihrem Bett befinden sich Kisten, in die Sie zuvor geschoben haben
  • der Ladebereich der Dateien, bevor er mit dem Power Loader in das Repository-Warehouse gelangt
  • wenn die Dateien wie das Kaffeepulver sind, dann sind die festgeschriebenen Dateien der gebrühte Kaffee
  • im Büro von Scrooge McDuck neben dem Tresor sind die Akten wie Münzen, bevor sie in den Tresor seines riesigen Geldbehälters gelangen
  • wenn Sie ein Haustier nach Hause bringen, sind Sie verpflichtet

Es ist magisch!

146
Spoike

Staging ist ein Schritt vor dem Commit-Prozess 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 (bereitgestellte Dateien durch andere Versionen von bereitgestellten Dateien ersetzen, Änderungen aus dem Staging entfernen usw.).

kaputte Metapherzeit :

Stellen Sie sich ein Szenario vor, in dem Sie die Umzugsunternehmen 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 im Hauptflur lassen. Die Umzugsunternehmen kommen einfach, holen die (bereits verpackten) Taschen vom Flur und transportieren sie. In diesem Beispiel wird alles inszeniert, bis die Mover Ihre Sachen bekommen: Sie entscheiden, was wohin geht, wie Sie es verpacken usw. (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 Staging auch Transaktions-Commits, indem alle Vorgänge in das unterteilt werden, was fehlschlagen kann (Staging) und was nicht fehlschlagen kann (Commit):

Das Commit in Git wird transaktional implementiert, nachdem das Staging erfolgreich abgeschlossen wurde. Mehrere Schritte in der Bereitstellung können fehlschlagen (z. B. müssen Sie ein Commit durchführen, aber Ihre Festplatte ist zu 99,9999% voll, und Git hat keinen Platz, um ein Commit durchzuführen). Dies schlägt beim Staging fehl (Ihr Repository wird nicht durch eine teilweise Festschreibung beschädigt), und der Staging-Prozess wirkt sich nicht auf Ihren Festschreibungsverlauf aus (er beschädigt Ihr Repository im Fehlerfall nicht).

38
utnapistim

Eine Datei zu inszenieren bedeutet, sie für ein Commit vorzubereiten. Da git diese Aktion dem Benutzersteuerelement zur Verfügung stellt, können Sie teilweise Festschreibungen erstellen oder eine Datei ändern, sie bereitstellen, erneut ändern und nur die ursprüngliche Änderung festschreiben oder auf diese zurücksetzen.

Mit Staging können Sie genau steuern , wie Sie sich der Versionskontrolle nähern möchten.

26
Josh K

Um die anderen hervorragenden Antworten zu ergänzen, kommt hier der Name für "Bühne":

Ich überprüfte das Wörterbuch auf die Bedeutung der Stufe und keine der Bedeutungen bezog sich auf Quellcodeverwaltungskonzepte.

Auf Englisch kann "inszenieren" bedeuten

organisieren und an (einer öffentlichen Veranstaltung) teilnehmen: UDF-Unterstützer veranstalteten eine Demonstration in Sofia

(von http://oxforddictionaries.com/definition/stage )

Der Name "Staging" für die Git-Funktion 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 Performance, aber es ist ein wichtiges Ereignis in einem VCS :-).

21
sleske

Bei den meisten anderen Versionskontrollsystemen gibt es zwei Orte zum Speichern von Daten: Ihre Arbeitskopie (die Ordner/Dateien, die Sie derzeit verwenden) und den Datenspeicher (wo die Versionskontrolle entscheidet, wie Ihre Änderungen gepackt und gespeichert werden). In Git gibt es eine dritte Option: den Staging-Bereich (oder Index). Es handelt sich im Grunde genommen um eine Laderampe, an der Sie bestimmen können, welche Änderungen verschickt werden.

quelle: http://gitready.com/beginner/2009/01/18/the-staging-area.html

5
Mostafiz Rahman

Die "Stufe" 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 Teil des Festschreibungsprozesses machen. Es ist also nur eine Option, die Git Ihnen bietet, weil es so kann, warum nicht?

So wie ich es sehe, ist die Hauptsache, die die Git "Stage" Ihnen gibt, dass andere VCS dies nicht tun, dass Sie damit eine Datei überprüfen können. Es ist praktisch ein unbenanntes, nicht kommentiertes lokales Commit, das Ihnen einen Zwischenschritt zwischen der Erledigung all Ihrer Arbeit und dem dauerhaften Festschreiben an das Repository und dem Speichern von nichts in Ihrem lokalen Repo gibt.

Angenommen, Sie haben eine Funktion teilweise fertiggestellt. Es befindet sich 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 Ihre Änderungen vornehmen und dann weiter an der Funktion arbeiten.

Später haben Sie die Möglichkeit, nur das festzuschreiben, was Sie bereitgestellt haben (und dieses Festschreiben in das Remote-Repository zu übertragen) oder Ihre neuen Änderungen zu Ihrem Bereitstellungsbereich hinzuzufügen und dann alles auf einmal festzuschreiben oder nur Ihre neuen Änderungen rückgängig zu machen und Setzen Sie Ihr Arbeitsverzeichnis auf den Zustand zurück, in dem es sich befand, als Sie Ihre Änderungen vorgenommen haben.

Es ist durchaus möglich, den Staging-Bereich praktisch vollständig zu überspringen und einfach das -a Option zu git commit wenn Sie den Staging-Bereich nicht als hilfreich empfinden. Viele Leute überspringen die Bereitstellung, und GUI-Tools ermöglichen dies normalerweise auch.

2
Old Pro