it-swarm-eu.dev

Was ist der Vorteil des zweistufigen Commit-Prozesses (Staging) von git?

Ich lerne Git und habe festgestellt, dass es sich um einen zweistufigen Commit-Prozess handelt:

  1. git add <files>
  2. git commit

Im ersten Schritt werden Revisionen in einen sogenannten "Staging-Bereich" oder "Index" eingefügt.

Mich interessiert, warum diese Designentscheidung getroffen wird und welche Vorteile sie hat.

Als Git-Benutzer tun Sie dies auch oder verwenden Sie einfach git commit -a?

Ich frage dies, da ich von bzr (Basar) komme, der diese Funktion nicht hat.

180
thomasrutter

Arbeit in separate Commits aufteilen. Sie haben wahrscheinlich schon oft eine Datei geöffnet, um einen einzeiligen Fix zu schreiben, aber gleichzeitig haben Sie festgestellt, dass die Die Formatierung war falsch, einige Dokumentationen konnten verbessert werden oder andere nicht verwandte Korrekturen. Mit anderen RCS s müssten Sie das aufschreiben oder in den Speicher übertragen, den Fix beenden, für den Sie gekommen sind, das festschreiben und dann zum Fix zurückkehren die anderen Sachen (oder erstellen Sie einen Ball-of-Mud-Commit mit nicht verwandten Sachen). Mit Git können Sie einfach alles auf einmal reparieren und die einzelne Zeile mit git add -i Oder git-gui Separat + festschreiben.

Brechen Sie den Build nicht ab. Sie arbeiten an einer komplizierten Modifikation. Sie probieren also verschiedene Dinge aus, von denen einige besser funktionieren als andere, andere die Dinge kaputt machen. Mit Git würden Sie Dinge inszenieren, wenn die Modifikation die Dinge besser machte, und checkout (oder Tweak noch mehr), wenn die Modifikation nicht funktionierte. Sie müssen sich nicht auf die Rückgängig-Funktion des Editors verlassen, sondern können das gesamte Repo checkout anstatt nur Datei für Datei und alle Fehler auf Dateiebene (z. B. das Entfernen einer nicht festgeschriebenen Datei) oder Speichern + Schließen nach einer fehlerhaften Änderung) führt nicht zu viel Arbeitsverlust.

83
l0b0

Einer der Vorteile für mich ist die Möglichkeit, Dateien schrittweise "hinzuzufügen". Vor dem Festschreiben überprüfe ich jede Datei. Sobald die Datei überprüft wurde, füge ich sie hinzu. Wenn ich git status oder git diff, git zeigt mir nur die Dateien, die geändert und noch nicht hinzugefügt wurden. Wenn ich alle Dateien überprüft und hinzugefügt habe, kann ich ein Commit durchführen.

Also ja, ich finde den Staging-Bereich sehr hilfreich.

Und nein, ich benutze niemals git commit -a. Ich benutze jedoch oft git add -u. Auf diese Weise kann ich mir immer noch vorstellen, was zu tun ist.

65
David

Der Vorteil ist ganz einfach: Sie haben die volle Kontrolle darüber, welche Dateien Sie wann festschreiben möchten. In diesem Fall können Sie mit git add -p Steuern, welche Zeilen Sie festschreiben möchten.

21
Rein Henrichs

Einer der Vorteile, die mir gefallen, ist die Fähigkeit, einen Teil einer Änderung vorzunehmen. Dh mit git add -e. Ich verpflichte mich nicht so oft, wie ich es manchmal sollte, und mit dem Befehl git add -e kann ich meine Änderungen bis zu einem gewissen Grad enträtseln.

1
leed25d