GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Git Fetch:definición y ejemplos

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.

De los dos comandos, git fetch es la opción más segura cuando se recuperan cambios de código de un repositorio remoto.


Ubuntu
  1. Cómo cambiar el nombre de una sucursal de Git local y remota

  2. Comando SCP en Linux:cómo usarlo, con ejemplos

  3. Git Remote Add con otro puerto SSH (no 22)

  4. Cómo cambiar el nombre de Git Branch Local y Remote

  5. Compruebe si el repositorio local de git está delante/detrás del control remoto

Comandos SSH en Linux con ejemplos de uso

Cómo configurar un repositorio Git remoto en Debian 11

Cómo eliminar el repositorio remoto de Git

Cómo configurar un repositorio git con Plesk

Cómo clonar un repositorio Git con Ansible

Cómo configurar y administrar un repositorio Git remoto en Linux

    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.