git fetch (Deutsch)

git fetch (Deutsch)

git fetch Befehl downloads commits, Dateien und Links aus einem remote-repository in Ihr lokales repo. Holen ist das, was Sie tun, wenn Sie sehen möchten, woran alle anderen gearbeitet haben. Es ähnelt svn update, da Sie sehen können, wie der zentrale Verlauf fortgeschritten ist, Sie jedoch nicht gezwungen werden, die Änderungen tatsächlich in Ihrem Repository zusammenzuführen. Git isoliert abgerufene Inhalte von vorhandenen lokalen Inhalten; Es hat absolut keinen Einfluss auf Ihre lokale Entwicklungsarbeit., Abgerufene Inhalte müssen explizit mit dem Befehl git checkout ausgecheckt werden. Dies macht das Abrufen zu einer sicheren Möglichkeit, Commits zu überprüfen, bevor sie in Ihr lokales Repository integriert werden.

Beim Herunterladen von Inhalten aus einem Remote-Repo stehen die Befehle git pull und git fetch zum Ausführen der Aufgabe zur Verfügung. Sie können git fetch als „sichere“ Version der beiden Befehle betrachten. Es wird den Remote-Inhalt herunterladen, aber nicht den Arbeitsstatus Ihres lokalen Repos aktualisieren, sodass Ihre aktuelle Arbeit erhalten bleibt., git pull ist die aggressivere Alternative; es wird den Remote-Inhalt für den aktiven lokalen Zweig herunterladen und sofort git merge ausführen, um ein Merge-Commit für den neuen Remote-Inhalt zu erstellen. Wenn ausstehende Änderungen im Gange sind, führt dies zu Konflikten und zum Start des Zusammenführungskonfliktlösungsflusses.

Wie git fetch mit entfernten Zweigen arbeitet

Um besser zu verstehen, wie git fetch funktioniert, lassen Sie uns diskutieren, wie Git Commits organisiert und speichert., Hinter den Kulissen speichert Git im Verzeichnis ./.git/objects des Repositorys alle Commits, lokal und remote. Git hält Remote – und lokale Branch-Commits durch die Verwendung von Branch Refs deutlich getrennt. Die Refs für lokale Zweige werden in der ./.git/refs/heads/gespeichert. Durch Ausführen des Befehls git branch wird eine Liste der lokalen branch refs ausgegeben. Im Folgenden finden Sie ein Beispiel für die Ausgabe von git branch mit einigen Demo-Zweignamen.,

git branch
master
feature1
debug2

Wenn Sie den Inhalt des Verzeichnisses /.git/refs/heads/ untersuchen, wird eine ähnliche Ausgabe angezeigt.

ls ./.git/refs/heads/
master
feature1
debug2

Entfernte Zweige sind genau wie lokale Zweige, außer dass sie Commits aus dem Repository eines anderen zuordnen. Entfernten Zweigen wird die Fernbedienung vorangestellt, zu der sie gehören, damit Sie sie nicht mit lokalen Zweigen verwechseln. Wie lokale Zweige hat Git auch Refs für entfernte Zweige. Remote branch Refs leben im Verzeichnis ./.git/refs/remotes/., Das nächste Beispielcode-Snippet zeigt die Zweige, die Sie nach dem Abrufen eines Remote-Repos mit dem Namen remote-repo sehen könnten:

git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature

Diese Ausgabe zeigt die lokalen Zweige an, die wir zuvor untersucht hatten, zeigt sie jedoch jetzt mit dem Präfix origin/an. Zusätzlich sehen wir jetzt die entfernten Zweige mit dem Präfix remote-repo. Sie können einen Remote-Zweig genau wie einen lokalen Zweig auschecken, aber dadurch befinden Sie sich in einem getrennten HEAD – Status (genau wie beim Auschecken eines alten Commits). Sie können sie als schreibgeschützte Zweige betrachten., Um Ihre Remote-Zweige anzuzeigen, übergeben Sie einfach das Flag -r an den Befehl git branch.

Sie können Remote-Zweige mit den üblichen Befehlen git checkout und git log überprüfen. Wenn Sie die Änderungen genehmigen, die ein Remote-Zweig enthält, können Sie ihn mit einer normalen git mergezu einem lokalen Zweig zusammenführen. Im Gegensatz zu SVN ist das Synchronisieren Ihres lokalen Repositorys mit einem Remote-Repository tatsächlich ein zweistufiger Prozess: Abrufen, dann Zusammenführen. Der Befehl git pull ist eine praktische Verknüpfung für diesen Prozess.,

Git fetch Befehle und Optionen

git fetch <remote>

Holen Sie alle Zweige aus dem Repository. Dadurch werden auch alle erforderlichen Commits und Dateien aus dem anderen Repository heruntergeladen.

git fetch <remote> <branch>

Wie der obige Befehl, aber nur den angegebenen Zweig abrufen.

git fetch --all

Ein Power Move, der alle registrierten Fernbedienungen und deren Zweige abruft:

git fetch --dry-run

Die Option --dry-run führt eine Demo-Ausführung des Befehls aus., Es werden Beispiele für Aktionen ausgegeben, die während des Abrufs ausgeführt werden, diese jedoch nicht angewendet werden.

git fetch a remote branch

Das folgende Beispiel zeigt, wie Sie einen Remote-Zweig abrufen und Ihren lokalen Arbeitsstatus auf den Remote-Inhalt aktualisieren. Nehmen wir in diesem Beispiel an, dass es einen zentralen Repo-Ursprung gibt, von dem aus das lokale Repository mit dem Befehl geklont wurde. Nehmen wir auch ein zusätzliches Remote-Repository namens coworkers_repo an, das einen feature_branch enthält, den wir konfigurieren und abrufen werden., Lassen Sie uns mit diesen Annahmen das Beispiel fortsetzen.

Zunächst müssen wir das Remote-Repo mit dem Befehl git remote konfigurieren.

git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git

Hier haben wir mithilfe der Repo-URL einen Verweis auf das Repo des Mitarbeiters erstellt. Wir übergeben diesen Remote-Namen nun an git fetch, um den Inhalt herunterzuladen.

git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch

Wir haben jetzt lokal den Inhalt von coworkers/feature_branch Wir müssen dies in unsere lokale Arbeitskopie integrieren., Wir beginnen diesen Vorgang mit dem Befehl git checkout, um den neu heruntergeladenen Remote-Zweig auszuchecken.

git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>

Die Ausgabe dieser Checkout-Operation zeigt an, dass wir uns in einem getrennten Zustand befinden HEAD. Dies wird erwartet und bedeutet, dass unsere HEAD ref auf eine ref zeigt, die nicht mit unserer lokalen Historie übereinstimmt. Da HEAD auf die Referenz coworkers/feature_branch, können wir aus dieser Referenz einen neuen lokalen Zweig erstellen., Die Ausgabe ‚ detached HEAD ‚ zeigt uns, wie wir dies mit dem Befehl git checkout tun:

git checkout -b local_feature_branch

Hier haben wir einen neuen lokalen Zweig namens local_feature_branch. Dies setzt Updates HEAD auf den neuesten Remote-Inhalt und wir können die Entwicklung von diesem Punkt aus fortsetzen.

Herkunft mit git fetch synchronisieren

Im folgenden Beispiel wird der typische Workflow zum Synchronisieren Ihres lokalen Repositorys mit dem Master-Zweig des zentralen Repositorys erläutert.,

git fetch origin

Dadurch werden die heruntergeladenen Zweige angezeigt:

Die Commits dieser neuen entfernten Zweige werden im folgenden Diagramm als Quadrate anstelle von Kreisen angezeigt. Wie Sie sehen, erhalten Sie mit git fetch Zugriff auf die gesamte Verzweigungsstruktur eines anderen Repositorys.,

Um zu sehen, welche Commits dem Upstream-Master hinzugefügt wurden, können Sie eine git log mit origin/master als Filter ausführen:

git log --oneline master..origin/master

Um die Änderungen zu genehmigen und in Ihrem lokalen Master-Zweig zusammenzuführen, verwenden Sie die folgenden Befehle:

git checkout master
git log origin/master

Dann können wir git merge origin/master:

git merge origin/master

Die Origin/master-und Master-Zweige zeigen jetzt auf dasselbe Commit und Sie werden mit den Upstream-Entwicklungen synchronisiert.,

Git fetch Zusammenfassung

In review git fetch ist ein primärer Befehl zum herunterladen von Inhalt von einem remote-repository. git fetch wird in Verbindung mit git remote, git branch, git checkout und git reset verwendet, um ein lokales Repository auf den Status einer Fernbedienung zu aktualisieren. Der Befehl git fetch ist ein kritischer Teil kollaborativer Git-Arbeitsabläufe., git fetch has similar behavior to git pull, however, git fetch can be considered a safer, nondestructive version.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.