Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Der Unterschied zwischen „git fetch“ und „git pull“

Der Unterschied zwischen „git fetch“ und „git pull“

Guanhui
Guanhuinach vorne
2020-07-22 17:59:282920Durchsuche

Der Unterschied zwischen „git fetch“ und „git pull“

Sowohl Git Fetch als auch Git Pull können das Remote-Repository auf das lokale aktualisieren. Es gibt also mehrere Konzepte, die erwähnt werden müssen, um dieses Problem zu klären.

FETCH_HEAD: ist ein Versionslink, der in einer lokalen Datei aufgezeichnet wird und auf die Endversion des Zweigs verweist, der aus dem Remote-Warehouse entfernt wurde.

commit-id: Nachdem jede lokale Arbeit abgeschlossen ist, wird ein Git-Commit-Vorgang ausgeführt, um die aktuelle Arbeit im lokalen Repo zu speichern. Zu diesem Zeitpunkt wird ein Commit durchgeführt. Es wird eine ID generiert, eine Seriennummer, die eine Version eindeutig identifiziert. Nach der Verwendung von Git Push wird diese Seriennummer auch mit dem Remote-Warehouse synchronisiert.

Mit den oben genannten Konzepten sprechen wir über Git Fetch

Git Fetch: Dadurch wird die neueste Commit-ID der Zweige aktualisiert, die in allen Remote-Repositorys in Git Remote enthalten sind . Notieren Sie es in der .git/FETCH_HEAD-Datei
Git fetch aktualisiert das Remote-Warehouse wie folgt:

git fetch origin master:tmp 
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp 
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用这步删除

(1) Wenn Sie git fetch direkt verwenden, sind die Schritte wie folgt:

  • Erstellen und aktualisieren Sie lokale Remote-Filialen. Das heißt, erstellen und aktualisieren Sie den Zweig origin/xxx und ziehen Sie den Code in den Zweig origin/xxx.

  • Legen Sie die Korrespondenz zwischen aktuellem Zweig-Ursprung und aktuellem Zweig in FETCH_HEAD fest. Wenn Sie zu diesem Zeitpunkt direkt git merge ausführen, kann Ursprung/abc mit dem abc-Zweig zusammengeführt werden.

(2) git fetch origin
Geben Sie einfach manuell die abzurufende Fernbedienung an. Wenn kein Zweig angegeben ist, wird normalerweise standardmäßig Master

(3) verwendet. git fetch origin dev
gibt Remote Remote und FETCH_HEAD an und ruft nur die Commits dieses Zweigs ab.

Dieser Befehl greift auf das Remote-Warehouse zu und ruft alle Daten ab, die Sie noch nicht haben. Sobald die Ausführung abgeschlossen ist, verfügen Sie über Verweise auf alle Zweige in diesem Remote-Repository, die jederzeit zusammengeführt oder angezeigt werden können.

Wenn Sie den Befehl „git clone“ verwenden, um ein Repository zu klonen, fügt der Befehl es automatisch als Remote-Repository hinzu (git remote -v) und verwendet standardmäßig „origin“ als Abkürzung. Git fetch origin ruft also alle seit dem Klon (oder dem letzten Abruf) neu gepushten Arbeiten ab. Es ist wichtig zu beachten, dass der Befehl „git fetch“ Daten in Ihr lokales Repository zieht – er führt Ihre aktuelle Arbeit nicht automatisch zusammen oder ändert sie. Sie müssen es manuell in Ihren Job integrieren, wenn Sie fertig sind.

Wenn Sie einen Zweig eingerichtet haben, um einen Remote-Zweig zu verfolgen, können Sie den Befehl „git pull“ verwenden, um den Remote-Zweig automatisch abzurufen und mit dem aktuellen Zweig zusammenzuführen. Dies kann für Sie ein einfacherer oder komfortablerer Arbeitsablauf sein; standardmäßig legt der Befehl „git clone“ den lokalen Master-Zweig automatisch fest, um den Master-Zweig des geklonten Remote-Repositorys (oder wie auch immer der Standard-Zweig heißt) zu verfolgen. Beim Ausführen von git pull werden normalerweise die Daten vom ursprünglich geklonten Server abgerufen und automatisch versucht, sie mit dem aktuellen Zweig zusammenzuführen.

Git Pull: Vergleichen Sie zunächst basierend auf dem lokalen FETCH_HEAD-Datensatz den lokalen FETCH_HEAD-Datensatz mit der Versionsnummer des Remote-Warehouses, und dann ruft Git Fetch die nachfolgenden Versionsdaten des Remote-Warehouses ab Zweig, auf den derzeit verwiesen wird, und verwenden Sie dann git merge, um ihn mit dem lokalen aktuellen Zweig zusammenzuführen. Man kann also davon ausgehen, dass Git Pull eine Kombination der beiden Schritte Git Fetch und Git Merge ist.

Git Pull wird wie folgt verwendet:

git pull <远程主机名> <远程分支名>:<本地分支名>
//取回远程主机某个分支的更新,再与本地的指定分支合并。

Daher ist Git Fetch im Vergleich zu Git Pull gleichbedeutend damit, die neueste Version von der Fernbedienung auf die lokale Version zu übertragen, aber es ist wird nicht automatisch zusammengeführt. Wenn Sie selektiv zusammenführen müssen, ist Git Fetch die bessere Wahl. Wenn der Effekt derselbe ist, ist Git Pull schneller.

Hinweis: Die Verwendung von Git Pull zum Aktualisieren des Codes ist relativ einfach und gewalttätig. Gemessen an der Commit-ID sind die tatsächlichen Implementierungsprinzipien jedoch unterschiedlich. Verwenden Sie daher nicht Git Pull und Git Merge um es einfacher zu machen.

Empfohlenes Tutorial: „Git

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen „git fetch“ und „git pull“. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen