2013-03-05 8 views
5

Im Diagramm auf der Seite git-scm, Recording Changes to a Repository, wird angezeigt, dass beim Hinzufügen einer Datei untracked in den Zustand unmodified gewechselt wird.Wenn eine nicht verfolgte Datei hinzugefügt wird, wird sie nicht sofort in die Staging-Ebene verschoben?

enter image description here

Ist das richtig? Wenn ich $ git add myFile dann $ git status starte, zeigt es, dass myFile bereit ist, begangen zu werden, was (aus meiner Anfängerperspektive) beim Blick auf das Diagramm auf dieser Seite unwillkürlich aussieht.

Ist das Diagramm falsch, unvollständig oder ist mein Verständnis des Diagramms falsch? Wenn das letztere, bitte könnte jemand erklären, was gemeint ist.

Antwort

4

Wenn Sie git add eine neue zuvor nicht aufgezeichnete Datei, wird es sofort inszeniert (die blaue Bühne im Bild). Das Diagramm ist in dieser Hinsicht irreführend, aber der Text auf dieser Seite sagt so viel unter dem Absatz Tracking New Files.

+0

Das Diagramm ist wohl irreführend; Der Pfeil "Datei hinzufügen" sollte von "nicht verfolgt" zu "gestuft" wechseln. AFAIK, wenn Sie "rm file" senden, wird die Datei aus dem Verzeichnis entfernt und im Staging-Bereich als gelöscht markiert. es wird nicht einfach untracked. –

+1

Ich denke, der Pfeil "Datei hinzufügen" bedeutet nicht direkt "git add". Ich denke, es versucht nur zu zeigen, wie die Datei von einem Zustand in einen anderen verschoben wird ... Wie auch immer, es ist nicht klar genug – iberbeu

+0

Danke, ich lehre ein Intro, um den Rest meines Labors zu unterrichten, aber als Anfänger, Ich versuche vorsichtig zu sein, um nichts zu lehren, was ich selbst unsicher bin. – ataulm

3

Die Grafik ist irreführend, weil es nicht klar heraus ruft den Unterschied zwischen einer Datei und einer Version der gleichen Datei.

Wenn Sie git add eine Datei, die Sie auf denStaging Area aktuelle Version davon in Ihrem Arbeitsverzeichnis hinzufügen. Die aktuelle Version wird jetzt als inszeniert und bereit zu begehen. Da der Inhalt der Arbeitsverzeichnisdatei mit dem der Inszenierten Version identisch ist, gilt die Datei als Unmodified. Wenn Sie in diesem Moment festschreiben, ist die Version, die in das Repo eingecheckt wird, die Inszenierte Version, die auch dazu passt, wie die Datei in Ihrem Arbeitsverzeichnis aussieht.

Angenommen, Sie müssen nicht sofort nach dem Hinzufügen der Datei Änderungen vornehmen, sondern die Datei in Ihrem Arbeitsverzeichnis ändern. Nun, Sie tatsächlich Art-of haben zwei Versionen der Datei: die Inszenierte Version von früher, und jetzt die Modified Version in Ihrem Arbeitsverzeichnis. Wenn Sie unter diesen Moment festschreiben, wird die frühere Inszenierte Version eingecheckt, die sich von der in Ihrem Arbeitsverzeichnis unterscheidet.

3

Die Antwort auf Ihre Frage ist ja. Wenn Sie eine nicht verfolgte Datei inszenieren, wird sie inszeniert, nicht unverändert.

Für mich das schwierigste Problem bei diesem Schema war die, dass es keinen Sinn zu kategorisieren Dateien wie macht:

  • untracked
  • unmodifizierten
  • modifizierte
  • inszeniert

Die richtigen Kategorien sind meiner Meinung nach:

  • untracked
  • unmodifizierten
  • unstaged
  • inszeniert

correct categories for state of the file

Die wichtigen Adjektive mit rosa Farbe markiert sind. Die grauen sind überflüssig. Sie müssen nicht sagen: "Die Datei wird nachverfolgt, geändert und inszeniert". Es reicht aus zu sagen "die Datei ist inszeniert", da jede gestaffelte Datei modifiziert und verfolgt wird.

Sobald Sie es verstanden haben, ist es leicht zu verstehen, dass nicht gekerbte Dateien nur in den gestaffelten Zustand übertragen werden können. Dies geschieht durch:

git add [filename] 

Es gibt keine Befehle Konvertierungen zu machen:

  • untracked file => unveränderte Datei
  • untracked file => unstaged Datei