Suche…


Bemerkungen

Es ist erwähnenswert, dass das Staging wenig mit "Dateien" selbst und allem, was mit den Änderungen in jeder Datei zusammenhängt, zu tun hat. Wir inszenieren Dateien, die Änderungen enthalten, und git verfolgt die Änderungen als Commits (auch wenn die Änderungen in einem Commit in mehreren Dateien vorgenommen werden).

Die Unterscheidung zwischen Dateien und Commits mag geringfügig erscheinen, aber das Verständnis dieses Unterschieds ist für das Verständnis grundlegender Funktionen wie Kirschpick und Differenz wesentlich. (Siehe die Frustration in Kommentaren bezüglich der Komplexität einer akzeptierten Antwort, die Cherry-Pick als Dateiverwaltungswerkzeug vorschlägt .)

Was ist ein guter Ort, um Konzepte zu erklären? Ist es in Bemerkungen?

Schlüssel Konzepte:

Eine Datei ist die gebräuchlichste Metapher der beiden in der Informationstechnologie. Best Practice schreibt vor, dass sich ein Dateiname nicht ändert, wenn sich der Inhalt ändert (mit einigen wenigen Ausnahmen).

Ein Commit ist eine Metapher, die für die Quellcodeverwaltung eindeutig ist. Commits sind Änderungen, die sich auf einen bestimmten Aufwand beziehen, wie beispielsweise ein Bugfix. Commits beinhalten oft mehrere Dateien. Ein einzelner kleinerer Bugfix kann Änderungen an Vorlagen und CSS in eindeutigen Dateien beinhalten. Wenn die Änderung beschrieben, entwickelt, dokumentiert, überprüft und bereitgestellt wird, können die Änderungen in den einzelnen Dateien kommentiert und als eine Einheit behandelt werden. Die einzige Einheit ist in diesem Fall das Festschreiben. Ebenso wichtig ist, dass durch die Fokussierung auf das Commit während einer Überprüfung die unveränderten Codezeilen in den verschiedenen betroffenen Dateien sicher ignoriert werden können.

Eine einzelne Datei bereitstellen

Um eine Datei für das Festschreiben bereitzustellen, führen Sie sie aus

git add <filename>

Alle Änderungen an Dateien bereitstellen

git add -A
2,0
git add .

In Version 2.x git add . führt alle Änderungen an den Dateien im aktuellen Verzeichnis und allen seinen Unterverzeichnissen aus. In 1.x werden jedoch nur neue und geänderte Dateien bereitgestellt, keine gelöschten Dateien .

Verwenden Sie git add -A oder den entsprechenden Befehl git add --all , um alle Änderungen an Dateien in einer beliebigen Version von git git add --all .

Bühne gelöschte Dateien

git rm filename

Um die Datei aus Git zu löschen, ohne sie von der Festplatte zu entfernen, verwenden Sie das Flag --cached

git rm --cached filename

Machen Sie eine Datei bereit, die Änderungen enthält

git reset <filePath>

Interaktives Hinzufügen

git add -i (oder --interactive ) erhalten Sie eine interaktive Schnittstelle, auf der Sie den Index bearbeiten können, um die --interactive für das nächste Commit vorzubereiten. Sie können Änderungen an ganzen Dateien hinzufügen und entfernen, nicht protokollierte Dateien hinzufügen und Dateien aus der Nachverfolgung entfernen, aber auch einen Unterabschnitt der Änderungen auswählen, die in den Index aufgenommen werden sollen, indem Sie die hinzuzufügenden Änderungen auswählen, diese teilen oder sogar den Unterschied bearbeiten . Viele grafische Commit-Tools für Git (wie z. B. git gui ) enthalten eine solche Funktion. Dies ist möglicherweise einfacher zu verwenden als die Befehlszeilenversion.

Es ist sehr nützlich (1), wenn Sie Änderungen im Arbeitsverzeichnis, die Sie in separate Commits einfügen möchten, verwickelt haben, und nicht alle in einem einzigen Commit (2), wenn Sie sich in einer interaktiven Datenbank befinden und auch teilen möchten großes Engagement.

$ git add -i
           staged     unstaged path
  1:    unchanged        +4/-4 index.js
  2:        +1/-0      nothing package.json

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now>

In der oberen Hälfte dieser Ausgabe wird der aktuelle Status des Indexes in gestaffelte und nicht bereitgestellte Spalten angezeigt:

  1. index.js 4 Zeilen hinzugefügt und 4 Zeilen entfernt. Es wird derzeit nicht inszeniert, da der aktuelle Status "unverändert" anzeigt. Wenn diese Datei bereitgestellt wird, wird das +4/-4 Bit in die bereitgestellte Spalte übertragen, und die nicht bereitgestellte Spalte liest "nichts".
  2. package.json wurde um eine Zeile erweitert und inszeniert. Es gibt keine weiteren Änderungen, da es wie in der Zeile "Nichts" unter der Spalte "Nicht bereitgestellt" angezeigt wurde.

Die untere Hälfte zeigt, was Sie tun können. Geben Sie entweder eine Zahl (1-8) oder einen Buchstaben ( s , u , r , a , p , d , q , h ) ein.

status zeigt die Ausgabe identisch mit dem oberen Teil der Ausgabe.

update können Sie weitere Änderungen an den bereitgestellten Commits mit zusätzlicher Syntax vornehmen.

revert die bereitgestellten Commit-Informationen wieder auf HEAD zurück.

add untracked untracked add untracked können Sie Dateipfade hinzufügen, die zuvor von der Versionskontrolle nicht erfasst wurden.

patch kann ein Pfad aus einer Ausgabe ähnlich dem status für die weitere Analyse ausgewählt werden.

diff zeigt an, was begangen wird.

quit den Befehl.

help bietet weitere Hilfe zur Verwendung dieses Befehls.

Änderungen nach Stück hinzufügen

Sie können sehen, welche "Hunks" der Arbeit mit dem Patch-Flag zum Festschreiben bereitgestellt werden:

git add -p

oder

git add --patch

Daraufhin wird eine interaktive Eingabeaufforderung geöffnet, in der Sie die Unterschiede betrachten und entscheiden können, ob Sie sie einschließen möchten oder nicht.

Stage this hunk [y,n,q,a,d,/,s,e,?]?
  • y Bühne dieses Stück für das nächste Commit
  • n inszenieren Sie diesen Hunk nicht für das nächste Commit
  • q quittieren; Inszenieren Sie diesen Kerl oder einen der verbleibenden Kerle nicht
  • eine Bühne dieses Stück und alle späteren Teile in der Datei
  • Stellen Sie dieses Hunk oder eines der späteren Hunks in der Datei nicht bereit
  • g Wählen Sie einen Hunk aus, zu dem Sie gehen möchten
  • / Suche nach einem Hunk, der der angegebenen Regex entspricht
  • Ich lasse dieses Stück unentschieden, siehe das nächste unentschiedene Stück
  • Ich lasse dieses Stück unentschieden, siehe nächstes Stück
  • Ich lasse dieses Stück unentschieden, siehe vorheriges unentschlossenes Stück
  • Ich lasse dieses Stück unentschieden, siehe vorheriges Stück
  • s spaltet das aktuelle Hunk in kleinere Hunks auf
  • e das aktuelle Stück manuell bearbeiten
  • ? Hilfe zum Drucken von Brocken

Dies macht es einfach, Änderungen zu erfassen, die Sie nicht festlegen möchten.

Sie können dies auch über git add --interactive und Auswahl von p öffnen.

Inszenierte Änderungen anzeigen

So zeigen Sie die Hunks an, die zum Festschreiben bereitgestellt werden

git diff --cached


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow