Was ist der Unterschied zwischen git add
, push
und commit
?
Nur ein wenig verwirrt von SVN, wo "Update" Sachen "hinzufügt" und Commit einen "Push" macht und auch "hinzufügt"
Es gibt alle verschiedenen Funktionen innerhalb von Git. Ich hoffe auf eine Erklärung aus Ihrer Erfahrung.
Antworten:
git add
Fügt Ihre geänderten Dateien zur Warteschlange hinzu , um sie später festzuschreiben . Dateien werden nicht festgeschriebengit commit
Übernimmt die hinzugefügten Dateien und erstellt eine neue Revision mit einem Protokoll. Wenn Sie keine Dateien hinzufügen, schreibt Git nichts fest. Sie können beide Aktionen mit kombinierengit commit -a
git push
Überträgt Ihre Änderungen in das Remote-Repository.Diese Abbildung aus diesem Git-Spickzettel gibt einen guten Überblick über den Arbeitsablauf
git add
ist nicht in der Abbildung enthalten, da die vorgeschlagene Art des Festschreibens die Kombination istgit commit -a
, aber Sie könnengit add
dem Änderungsblock mental ein hinzufügen , um den Ablauf zu verstehen.Der Grund, warum
push
es sich um einen separaten Befehl handelt, liegt in dergit
Philosophie.git
ist ein verteiltes Versionsverwaltungssystem und Ihr lokales Arbeitsverzeichnis ist Ihr Repository! Alle von Ihnen festgeschriebenen Änderungen werden sofort wiedergegeben und aufgezeichnet.push
wird nur verwendet, um das Remote-Repo (das Sie möglicherweise mit anderen teilen) zu aktualisieren, wenn Sie mit dem fertig sind, woran Sie gerade arbeiten. Dies ist eine gute Möglichkeit, Änderungen lokal (ohne Netzwerk-Overhead) zu bearbeiten und zu speichern und sie nur zu aktualisieren, wenn Sie möchten, anstatt bei jedem Commit. Dies führt indirekt zu einfacheren Commits / Verzweigungen usw. (warum nicht, richtig? Was kostet es Sie?), Was zu mehr Speicherpunkten führt, ohne das Repository zu beeinträchtigen.quelle
git add
wählt Änderungen ausgit commit
zeichnet Änderungen LOKAL aufgit push
teilt Änderungenquelle
git add
Fügt dem Git-Index Dateien hinzu. Dies ist ein Staging-Bereich für Objekte, die zum Festschreiben vorbereitet sind.git commit
Überschreibt die Dateien im Index in das Repository. Diesgit commit -a
ist eine Verknüpfung, mit der alle geänderten nachverfolgten Dateien zuerst zum Index hinzugefügt werden.git push
sendet alle ausstehenden Änderungen an das Remote-Repository, dem Ihr Zweig zugeordnet ist (z. B. auf GitHub).Um Git zu verstehen, müssten Sie mehr Aufwand betreiben, als nur einen Blick auf die Dokumentation zu werfen, aber es lohnt sich auf jeden Fall. Versuchen Sie einfach nicht, Git-Befehle direkt Subversion zuzuordnen, da die meisten von ihnen kein direktes Gegenstück haben.
quelle
Ich war verwirrt darüber, was "Hinzufügen" wirklich bewirkt. Ich habe gerade einen sehr aufschlussreichen Absatz aus dem Buch Git Pro gelesen, den ich hier hinzufügen möchte, weil er die Dinge klarstellt
„Es stellt sich heraus, dass Git eine Datei genau so inszeniert, wie sie ist, wenn Sie den Befehl git add ausführen. Wenn Sie jetzt ein Commit durchführen, wird in der Version von Benchmarks.rb, wie sie zum letzten Mal ausgeführt wurde, der Befehl git add in das Commit übernommen, nicht in die Version der Datei, wie sie in Ihrem Arbeitsverzeichnis angezeigt wird, wenn Sie git commit ausführen. Wenn Sie eine Datei nach dem Ausführen von git add ändern, müssen Sie git add erneut ausführen, um die neueste Version der Datei bereitzustellen: ”
Auszug aus: Chacon, Scott. "Pro Git." Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Dieses Material ist möglicherweise urheberrechtlich geschützt.
quelle
add weist git an, eine Datei zu verfolgen.
Commit schreibt Ihre aktuellen Änderungen in Ihrem lokalen Repository fest
push schiebt dein lokales Repo stromaufwärts.
quelle
Ich finde dieses Bild sehr aussagekräftig:
(aus: Oliver Steele - Mein Git Workflow (2008) )
quelle
Sehr schönes PDF über viele GIT-Geheimnisse.
Add ist dasselbe wie svn's add (wie auch immer es manchmal verwendet wird, um aufgelöste Dateien zu markieren).
Das Festschreiben entspricht auch dem von svn, überträgt jedoch Änderungen in Ihr lokales Repository.
quelle
add -in git wird verwendet, um git mitzuteilen, welche Dateien festgeschrieben werden sollen. Es legt Dateien im Staging-Bereich ab
Commit-In-Git wird verwendet, um Dateien auf dem lokalen Computer zu speichern, sodass wir unsere Commit-Dateien trotzdem wiederherstellen können, wenn wir Änderungen vornehmen oder sogar die Dateien löschen
push - Wenn wir unsere Dateien auf dem lokalen Computer festschreiben, können sie immer noch verloren gehen, wenn unser lokaler Computer verloren geht, beschädigt wird usw., um unsere Dateien zu schützen oder unsere Dateien freizugeben. Normalerweise möchten wir unsere Dateien auf einer Fernbedienung aufbewahren Repository wie Github. Um auf Remote-Repositorys zu sparen, verwenden wir Push
Beispiel Staging einer Datei mit dem Namen index.html git add index.html
Festschreiben einer Datei, die als git commit -m 'Name Ihres Commits' bereitgestellt wird
Pushing einer Datei an Github Git Push Origin Master
quelle