Tutoriales

git fetch versus git pull: cómo funcionan y cuándo usarlos

Ambos git fetch y git pull Se comunica con repositorios remotos, pero realizan operaciones muy diferentes en su sucursal actual. Mezclarlos es una de las causas más comunes de confirmaciones de fusión accidentales y momentos de «¿cómo terminó mi rama así?».

Cómo funciona git fetch

git fetch Descargue confirmaciones, ramas y etiquetas desde el control remoto y guárdelas bajo la referencia de seguimiento remoto, p. origin/main o origin/feature-x. No toca su directorio de trabajo, rama actual o índice.

bashgit fetch origin

Después de correr, origin/main Vaya a la última confirmación remota. tu local main Las ramas permanecen exactamente donde estaban. Desde la perspectiva de su sucursal, la recuperación es de solo lectura: es seguro ejecutarla en cualquier momento sin efectos secundarios en su trabajo.

Una vez obtenido, puedes verificar qué cambió antes de integrar algo:

bashgit log HEAD..origin/main --oneline

Esto muestra las confirmaciones que existen en el lado remoto pero no en la rama actual; esta es una vista previa sin consecuencias.

Cómo funciona git pull

git pull es un comando conveniente para operar git fetch Luego viene el paso de integración. La integración predeterminada es fusionar:

bashgit pull origin main# roughly equivalent to:git fetch origingit merge origin/main

atrás git pullsu rama actual ha avanzado y su directorio de trabajo puede contener archivos nuevos, archivos actualizados o conflictos de fusión. El cambio fue inmediato. git pull Actualice siempre la sucursal en la que está actualmente desprotegido; es necesario confirmar dónde se encuentra antes de ejecutar.

git fetch versus git pull: cuándo usar cada uno

obtenergit tirar
Descargar envío remoto
Actualizar rama de seguimiento remoto
Actualiza tu rama nativa actualNo
Modificar directorio de trabajoNo
Pueden ocurrir conflictos de fusiónNo
Operación segura en todo momentoSólo cuando esté listo para integrarse

usar git fetch cuando:

  • Quieres ver qué ha cambiado en tu control remoto antes de integrarlo
  • Estás a punto de cambiar la base de una rama de funciones y primero debes revisar el trabajo entrante.
  • Quieres revisar las ramas de tus compañeros de equipo sin afectar tus propias ramas

usar git pull cuando:

  • Estás listo para integrar cambios remotos y continuar trabajando en ellos.
  • La integración es predecible; por ejemplo, el intercambio sincrónico main Sucursal sin compromisos locales

Modo más seguro y banderas críticas

un desnudo git pull En una rama con confirmaciones locales, puede crear confirmaciones de fusión, introducir conflictos o activar una rebase, todo en un solo paso. Un patrón más seguro es separar los pasos:

bashgit fetch origingit log HEAD..origin/main --oneline     # review what is coming ingit merge origin/main                   # integrate when you are ready

si te has escapado git pull y quiero deshacerlo, ORIG_HEAD Señale la confirmación donde estaba su rama antes del pull:

bashgit reset --hard ORIG_HEAD
⚠️ Warning: git reset --hard discards uncommitted changes. Use it only when you are sure you do not need the current state of your working tree.

Banderas clave:

  • git fetch --prune — Eliminar ramas de seguimiento remoto que ya no existen en el control remoto
  • git fetch --all — Obtener desde el extremo remoto de cada configuración, no solo origin
  • git pull --ff-only — Actualizar ramas sólo si Git puede avanzar rápidamente; de lo contrario falla, entonces usted decide qué hacer a continuación; recomendado en ramas compartidas para evitar confirmaciones de fusión accidentales
  • git pull --rebase — Reproducir confirmaciones locales además de los cambios obtenidos en lugar de crear confirmaciones de fusión; produce historia lineal
  • git config --global pull.rebase true – hacer --rebase Comportamiento predeterminado para todas las extracciones futuras

--ff-only Especialmente útil en sucursales compartidas. Si el tirón no avanza rápidamente, entonces es un completo fracaso y aún tienes el control.

usar git fetch Para visibilidad, consulte git log HEAD..origin/mainy luego fusionar o cambiar la base según sus propias condiciones. Cuando la integración es predecible, git pull --ff-only Una alternativa más segura a tirar desnudo. Si tiene algún problema, deje un comentario a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba