Abrufen von Remote-Änderungen mit git fetch
In diesem Schritt lernen wir, wie man Änderungen aus einem Remoterepository abruft. Stellen Sie sich vor, Sie arbeiten an einem Projekt mit anderen Personen und diese haben einige Updates vorgenommen. Sie müssen diese Updates auf Ihren lokalen Rechner holen. Der Befehl git fetch
ist genau dafür da. Er lädt die neuesten Änderungen aus einem Remoterepository herunter, ohne sie jedoch in Ihren aktuellen Branch zu mergen.
Zunächst simulieren wir das Vorhandensein eines Remoterepositorys. Wir erstellen ein "bare" (nacktes) Repository und fügen es dann als Remote zu unserem bestehenden my-time-machine
-Repository hinzu.
cd ~/project
mkdir remote-repo.git
cd remote-repo.git
git init --bare
Dies erstellt ein "bare" Git-Repository, das normalerweise als zentrales Repository verwendet wird, von dem Entwickler pushen und pullen.
Jetzt kehren wir zu unserem my-time-machine
-Repository zurück und fügen dieses "bare" Repository als Remote hinzu.
cd ~/project/my-time-machine
git remote add origin ~/project/remote-repo.git
Wir haben unseren Remote origin
benannt, was eine gängige Konvention ist. Jetzt überprüfen wir, ob der Remote korrekt hinzugefügt wurde.
git remote -v
Sie sollten eine Ausgabe ähnlich der folgenden sehen, die die Fetch- und Push-URLs für den origin
-Remote anzeigt:
origin /home/labex/project/remote-repo.git (fetch)
origin /home/labex/project/remote-repo.git (push)
Jetzt simulieren wir eine Änderung im Remoterepository. Da es sich um ein "bare" Repository handelt, können wir nicht direkt Commits darin erstellen. Stattdessen simulieren wir eine Änderung, indem wir eine neue Datei im Verzeichnis des "bare" Repositorys erstellen.
cd ~/project/remote-repo.git
echo "This is a remote change" > remote_file.txt
Jetzt kehren Sie zu Ihrem my-time-machine
-Repository zurück.
cd ~/project/my-time-machine
An diesem Punkt weiß Ihr lokales Repository nichts von der remote_file.txt
, die in das simulierte Remote hinzugefügt wurde. Hier kommt git fetch
ins Spiel.
Führen Sie den Befehl git fetch
aus:
git fetch origin
Sie sehen möglicherweise nicht viel Ausgabe oder etwas, das darauf hinweist, dass neue Objekte empfangen wurden.
Was git fetch origin
getan hat, war, sich mit dem origin
-Remote zu verbinden und alle neuen Commits und Objekte herunterzuladen, die nicht in Ihrem lokalen Repository vorhanden sind. Es hat diese Änderungen jedoch nicht in Ihren aktuellen Branch (master
) gemergt. Die Änderungen sind jetzt in Ihrem lokalen Repository verfügbar, werden aber in einem speziellen Branch gespeichert, der den Remote verfolgt, normalerweise origin/master
genannt.
Dies ist ein wesentlicher Unterschied zwischen git fetch
und git pull
. git pull
ist im Wesentlichen git fetch
gefolgt von einem Merge. Indem Sie zuerst git fetch
verwenden, können Sie sehen, welche Änderungen auf dem Remote verfügbar sind, bevor Sie entscheiden, sie in Ihre Arbeit zu integrieren. Dies gibt Ihnen mehr Kontrolle und hilft, unerwartete Konflikte zu vermeiden.
Im nächsten Schritt sehen wir, wie man seinen lokalen Branch mit dem abgerufenen Remote-Branch vergleicht, um zu verstehen, welche Änderungen heruntergeladen wurden.