Différence entre Git Fetch et Git Pull
Cet article discutera des utilisations pratiques des commandes git pull
et git fetch
pour voir en quoi elles diffèrent et quand les utiliser.
Qu’est-ce que Git Fetch
Dans notre référentiel distant, nous avons les fichiers indiqués ci-dessous.
Attention, nos référentiels distants et locaux sont synchronisés. Modifions le fichier Sample.txt
dans le référentiel distant.
Écrivez quelque chose au hasard dans le fichier et validez les modifications.
À ce stade, notre référentiel distant a deux commits, tandis que notre référentiel local en a un. Cela signifie que notre référentiel local a besoin d’une mise à jour.
git fetch
est pratique à ce stade. Exécutons une commande git log
pour vérifier notre historique de validation dans notre référentiel local.
Notre dépôt local n’a pas le commit Updated Sample.txt
. Nous utilisons git fetch
pour vérifier les modifications.
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
À partir de la commande ci-dessus, nous pouvons voir un changement dans notre référentiel distant apporté à la branche principale. Nous pouvons appliquer ces modifications à notre dépôt local avec la commande git merge
.
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(-)
Exécutons la commande git log
pour vérifier notre historique de validation.
$ 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
À ce stade, nos dépôts locaux et distants sont synchronisés. Regardons la commande git pull
.
Qu’est-ce que Git Pull
Revenons à notre référentiel distant et apportons d’autres modifications à notre fichier. Écrivez un chiffre aléatoire et validez les modifications.
Maintenant, notre référentiel distant a un commit de plus que notre référentiel local. Nous pouvons exécuter la commande git pull
pour mettre à jour notre référentiel local.
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(+)
Notre référentiel local est maintenant à jour avec notre référentiel distant. Nous pouvons conclure que git pull
est une commande composée (git fetch
+ git merge
).
Il récupère et fusionne les modifications directement.
Différence entre Git Fetch et Git Pull
git fetch | git pull |
---|---|
Vérifie les modifications apportées au référentiel distant. | Fusionnez directement les modifications du référentiel distant avec le référentiel local. |
Les modifications récupérées sont mises à jour dans un dossier .git . |
Les modifications sont apportées directement à votre référentiel local. |
Vous pouvez revoir les commits avant de fusionner. | Vous mettrez à jour les modifications instantanément. |
Les conflits apparaissent rarement. | Des conflits de fusion sont susceptibles de se produire. |
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