Introducción
El git fetch
El comando descarga objetos en la máquina local sin sobrescribir el código local existente en la rama actual. El comando extrae un registro de los cambios del repositorio remoto, lo que permite conocer el historial de progreso antes de los ajustes.
Sigue leyendo para aprender a usar git fetch
comando a través de ejemplos prácticos.
Requisitos previos
- Git instalado, actualizado y configurado.
- Acceso a la línea de comando/terminal.
- Un enlace de repositorio remoto o un Git remoto configurado.
¿Qué es git fetch?
El git fetch
El comando recupera confirmaciones, archivos, ramas y etiquetas de un repositorio remoto. La sintaxis general para el comando es:
git fetch <options> <remote name> <branch name>
Git aísla el contenido obtenido del código local. Por lo tanto, la búsqueda proporciona una forma segura de revisar la información antes de enviarla a su sucursal local.
¿Cómo funciona el comando git fetch?
El git fetch
El comando obtiene todos los cambios de un repositorio remoto. Los metadatos obtenidos residen en .git directorio, mientras que el directorio de trabajo permanece inalterado.
Efectivamente, git fetch
recupera los metadatos sin aplicar cambios localmente. El comando git pull combina git fetch
y git merge funciones en una.
Dado que el estado del directorio de trabajo no se ve afectado, los contenidos obtenidos deben verificarse con el comando git checkout o fusionarse con git merge.
Sin embargo, dado que unir contenidos es un proceso manual, git fetch
permite revisar el código antes de cambiar nada. El proceso de revisión ayuda a evitar conflictos de fusión.
Opciones de obtención de Git
A continuación se muestra la lista con las opciones más utilizadas cuando se trabaja con git fetch
:
--all
- Obtener todos los controles remotos.--append
(-a
) - Se agrega a los contenidos obtenidos existentes sin sobrescribirlos.--depth=<depth>
- Limite a un número específico de confirmaciones a partir de la punta del historial de cada rama remota.--deepen=<depth>
- Limite a un número específico de confirmaciones a partir del límite actual de cada historial de rama remota hasta la punta.--shallow-since=<date>
- Incluya todas las confirmaciones accesibles después de la fecha especificada.--shallow-exclude=<revision>
- Excluye confirmaciones de una rama o etiqueta remota especificada. Utilice la opción varias veces para especificar múltiples exclusiones.--dry-run
- La opción agregada a cualquier comando muestra lo que sucede sin ejecutar el comando como una demostración.--multiple
- Permite múltiples<repository or group>
argumentos.--no-tags
- Deshabilitar el seguimiento automático de etiquetas.--tags
- Obtener todas las etiquetas desde un control remoto.--set-upstream
- Agregar seguimiento ascendente.
Para ver todas las opciones disponibles, ejecute el siguiente comando en la terminal:
git fetch --help
El comando muestra la página de ayuda completa con una descripción detallada de todas las opciones disponibles.
Obtener repositorios de Git
Los ejemplos requieren un repositorio remoto agregado. Si ya tiene una configuración remota, pase a la siguiente sección. De lo contrario, agregue un control remoto de Git siguiendo los pasos a continuación:
1. Abra la terminal y cree un directorio para el proyecto:
mkdir <directory name>
2. Ingrese al directorio usando el cd
comando:
cd <directory name>
3. Inicializa el repositorio local con:
git init
4. Use el siguiente comando para agregar una URL remota al repositorio local:
git remote add <short remote name> <remote URL>
Por ejemplo:
git remote add origin [email protected]:phoenixNAP-KB/test.git
5. Confirme que el control remoto se agregó correctamente:
git remote -v
Siga los ejemplos en las secciones a continuación para ver cómo git fetch
el comando funciona para varios casos de uso.
Obtener un repositorio remoto
La forma más sencilla de usar git fetch
El comando es buscar un repositorio remoto:
git fetch <remote name>
Por ejemplo:
git fetch origin
El resultado muestra que el comando obtuvo todo el contenido del repositorio remoto, incluidas las ramas y las etiquetas.
Enumere todas las sucursales remotas obtenidas con:
git branch -r
Para enumerar todas las etiquetas obtenidas, ejecute:
git tag
Use el comando git checkout para hacer que el contenido esté disponible localmente para una nueva sucursal o use git merge para sincronizar la información del repositorio local.
Obtener una rama específica
Para obtener una rama específica de un repositorio, ejecute este comando:
git fetch <remote name> <branch name>
Por ejemplo, para buscar una rama llamada prueba desde el origen , ejecuta:
git fetch origin test
El comando solo obtiene el contenido de la rama específica. Para retirar el contenido obtenido en una nueva rama, ejecute:
git checkout -b test_branch origin/test
Los contenidos ahora están disponibles localmente en la rama test_branch .
Obtener todas las sucursales de todos los remotos
En los casos en que haya varios controles remotos, git fetch
ofrece un comando para recuperar información de todos los controles remotos.
Para ver todos los controles remotos, ejecute:
git remote
Obtén todo el contenido de todos los controles remotos con:
git fetch --all
El resultado muestra el proceso de obtención de todos los repositorios remotos.
Sincronizar el repositorio local
Utilice git fetch
comando con git merge para sincronizar el repositorio local. Siga los pasos a continuación para ver cómo funciona el ejemplo:
1. Obtenga el repositorio remoto con:
git fetch <remote name>
2. Compare la rama local con la remota enumerando las diferencias de confirmación:
git log --oneline <local branch>..<remote name>/<remote branch name>
Por ejemplo, si la sucursal local es test_branch y el control remoto está en origen/prueba , el siguiente comando enumera las diferencias:
git log --oneline test_branch..origin/test
El resultado enumera las confirmaciones y los mensajes asociados.
3. Consulte la sucursal local donde desea fusionar los cambios:
git checkout <local branch>
Por ejemplo:
git checkout test_branch
4. Sincronice la sucursal local con el comando git merge:
git merge origin/main
El contenido ahora está actualizado con el repositorio remoto. Si hay una advertencia de conflicto, siga nuestro tutorial para resolver los problemas de fusión:Cómo resolver conflictos de fusión en Git.
git buscar vs. tirar de git
La siguiente tabla describe cómo git fetch
y los comandos de extracción de git comparan.
git fetch | git pull |
---|---|
Descarga nueva información de un repositorio remoto sin fusionarse con la rama actual. | Descarga todos los cambios desde un repositorio remoto y los fusiona en la rama actual. |
Actualiza los datos del repositorio en .git directorio. | Actualiza el repositorio local directamente. |
Permite revisar confirmaciones y cambios de otros desarrolladores antes de confirmar el código. | Permite traer y actualizar cambios al repositorio local inmediatamente. |
No hay posibilidad de conflictos de combinación al ejecutar el comando. | Posibles conflictos de fusión que necesitan una resolución inmediata. |