Diferencia entre Git Fetch y Git Pull

John Wachira 15 febrero 2024
  1. ¿Qué es Git Fetch?
  2. ¿Qué es Git Pull?
  3. Diferencia entre Git Fetch y Git Pull
Diferencia entre Git Fetch y Git Pull

Este artículo discutirá los usos prácticos de los comandos git pull y git fetch ​​para ver en qué se diferencian y cuándo usarlos.

¿Qué es Git Fetch?

En nuestro repositorio remoto, tenemos los archivos que se muestran a continuación.

Repositorio remoto

Eso sí, nuestros repositorios remotos y locales están sincronizados. Cambiemos el archivo Sample.txt en el repositorio remoto.

Escriba algo aleatorio en el archivo y confirme los cambios.

archivo actualizado

En este punto, nuestro repositorio remoto tiene dos commits, mientras que nuestro repositorio local tiene un commit. Esto significa que nuestro repositorio local necesita una actualización.

git fetch es útil en este punto. Ejecutemos un comando git log para verificar nuestro historial de commits en nuestro repositorio local.

Historial de commits

Nuestro repositorio local no tiene el compromiso Updated Sample.txt. Usamos git fetch ​​para buscar cambios.

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

Desde el comando anterior, podemos ver un cambio en nuestro repositorio remoto realizado en la rama principal. Podemos aplicar estos cambios a nuestro repositorio local con el comando 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(-)

Ejecutemos el comando git log para verificar nuestro historial de commits.

$ 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

En este punto, nuestros repositorios locales y remotos están sincronizados. Veamos el comando git pull.

¿Qué es Git Pull?

Volvamos a nuestro repositorio remoto y hagamos más cambios en nuestro archivo. Escriba una figura aleatoria y confirme los cambios.

Ahora, nuestro repositorio remoto tiene un commit más que nuestro repositorio local. Podemos ejecutar el comando git pull para actualizar nuestro repositorio 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(+)

Nuestro repositorio local ahora está actualizado con nuestro repositorio remoto. Podemos concluir que git pull es un comando compuesto (git fetch ​​+ git merge).

Obtiene y fusiona los cambios directamente.

Diferencia entre Git Fetch y Git Pull

git fetch git pull
Comprueba los cambios realizados en el repositorio remoto. Combine los cambios del repositorio remoto con el repositorio local directamente.
Los cambios obtenidos se actualizan en una carpeta .git. Los cambios se realizan directamente en su repositorio local.
Puede revisar las commits antes de fusionarlas. Actualizarás los cambios al instante.
Los conflictos rara vez aparecen. Es probable que se produzcan conflictos de fusión.
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

Artículo relacionado - Git Pull

Artículo relacionado - Git Fetch