
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
| obtener | git tirar | |
|---|---|---|
| Descargar envío remoto | Sí | Sí |
| Actualizar rama de seguimiento remoto | Sí | Sí |
| Actualiza tu rama nativa actual | No | Sí |
| Modificar directorio de trabajo | No | Sí |
| Pueden ocurrir conflictos de fusión | No | Sí |
| Operación segura en todo momento | Sí | Só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
mainSucursal 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 --harddiscards 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 remotogit fetch --all— Obtener desde el extremo remoto de cada configuración, no soloorigingit 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 accidentalesgit pull --rebase— Reproducir confirmaciones locales además de los cambios obtenidos en lugar de crear confirmaciones de fusión; produce historia linealgit config --global pull.rebase true– hacer--rebaseComportamiento 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.









