Unterschied zwischen Git Fetch und Git Pull

John Wachira 15 Februar 2024
  1. Was ist Git-Fetch
  2. Was ist Git-Pull
  3. Unterschied zwischen Git Fetch und Git Pull
Unterschied zwischen Git Fetch und Git Pull

In diesem Artikel wird die praktische Verwendung der Befehle git pull und git fetch ​​erörtert, um zu sehen, wie sie sich unterscheiden und wann sie verwendet werden.

Was ist Git-Fetch

In unserem Remote-Repository haben wir die unten gezeigten Dateien.

Remote-Repository

Wohlgemerkt, unsere Remote- und lokalen Repositories sind synchron. Lassen Sie uns die Datei Sample.txt im Remote-Repository ändern.

Schreiben Sie etwas Zufälliges in die Datei und übertragen Sie die Änderungen.

aktualisierte Datei

An diesem Punkt hat unser entferntes Repository zwei Commits, während unser lokales Repository ein Commit hat. Das bedeutet, dass unser lokales Repository ein Update benötigt.

git fetch ist an dieser Stelle praktisch. Lassen Sie uns einen git log-Befehl ausführen, um unseren Commit-Verlauf in unserem lokalen Repository zu überprüfen.

Verlauf übernehmen

Unser lokales Repository verfügt nicht über den Commit Updated Sample.txt. Wir verwenden git fetch, um nach Änderungen zu suchen.

pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 709 bytes | 2.00 KiB/s, done.
From https://github.com/Wachira11ke/Delftscopetech
   c43169e..2445daf  main       -> origin/main

Aus dem obigen Befehl können wir eine Änderung in unserem Remote-Repository sehen, die am Hauptzweig vorgenommen wurde. Wir können diese Änderungen mit dem Befehl git merge auf unser lokales Repository anwenden.

pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git merge origin main
Updating c43169e..2445daf
Fast-forward
 Sample.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Lassen Sie uns den Befehl git log ausführen, um unseren Commit-Verlauf zu überprüfen.

$ git log
commit 2445dafc118748a5cb53c5262b393ab0e1a9e235 (HEAD -> main, origin/main, origin/HEAD)
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date:   Tue Mar 15 22:07:11 2022 +0300
    Update Sample.txt
    First Update
commit c43169e587ab7ab996087ff460e54032e83030f0
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date:   Tue Mar 15 21:45:50 2022 +0300
    Second commit
commit b2f77108396c9ae867d8e9d69c575eda99dd1436
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date:   Mon Feb 21 10:00:23 2022 +0300
    Initial commit

Zu diesem Zeitpunkt sind sowohl unsere lokalen als auch unsere Remote-Repositories synchron. Schauen wir uns den Befehl git pull an.

Was ist Git-Pull

Lassen Sie uns zu unserem Remote-Repository zurückkehren und weitere Änderungen an unserer Datei vornehmen. Schreiben Sie eine zufällige Zahl und übernehmen Sie die Änderungen.

Jetzt hat unser entferntes Repository einen Commit mehr als unser lokales Repository. Wir können den Befehl git pull ausführen, um unser lokales Repository zu aktualisieren.

pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git pull origin main
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 730 bytes | 3.00 KiB/s, done.
From https://github.com/Wachira11ke/Delftscopetech
 * branch            main       -> FETCH_HEAD
   2445daf..8089f2b  main       -> origin/main
Updating 2445daf..8089f2b
Fast-forward
 Sample.txt | 1 +
 1 file changed, 1 insertion(+)

Unser lokales Repository ist jetzt mit unserem Remote-Repository auf dem neuesten Stand. Wir können daraus schließen, dass git pull ein zusammengesetzter Befehl ist (git fetch ​​+ git merge).

Es ruft die Änderungen direkt ab und führt sie zusammen.

Unterschied zwischen Git Fetch und Git Pull

Git fetch Git pull
Prüft auf Änderungen, die am Remote-Repository vorgenommen wurden. Führen Sie Änderungen aus dem Remote-Repository direkt mit dem lokalen Repository zusammen.
Die abgerufenen Änderungen werden in einem .git-Ordner aktualisiert. Die Änderungen werden direkt in Ihrem lokalen Repository vorgenommen.
Sie können die Commits vor dem Zusammenführen überprüfen. Sie werden Änderungen sofort aktualisieren.
Konflikte treten selten auf. Zusammenführungskonflikte sind wahrscheinlich.
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Verwandter Artikel - Git Pull

Verwandter Artikel - Git Fetch