Git Fetch: una clase magistral

Publicado: 2023-02-26
Computadora portátil Linux que muestra una ventana de terminal con un patrón de globo terráqueo en el fondo y una marca de agua binaria
fatmawati achmad zaenuri/Shutterstock.com
El comando git fetch es como un comando git pull que actualiza tu repositorio local con información y confirma desde el repositorio remoto, sin sobrescribir tus archivos de trabajo.

El comando fetch de Git te permite mirar antes de saltar. Puede descubrir qué cambios se han realizado en un repositorio remoto, pero sin sobrescribir sus archivos locales con los archivos remotos.

Tabla de contenido

¿Qué es git fetch y qué hace?
Git buscar vs tirar
Sincroniza tus repositorios locales y remotos con git fetch
Ver todas las etiquetas obtenidas
Hacer una carrera en seco primero
Cómo obtener una sola rama
Obtener todas las sucursales
Comparación de sucursales locales y remotas
Sincronización de una sucursal local con una sucursal remota
El cachorro a medio entrenar

¿Qué es git fetch y qué hace?

El comando fetch en Git descarga confirmaciones, archivos y otra información desde un repositorio remoto a su repositorio local, de forma segura. Use fetch cuando desee ver qué cambios han realizado otros desarrolladores, sin verse obligado a aceptar los cambios. Sus archivos locales permanecen intactos. ¿Por qué es eso importante?

Tienes que mantener tu ingenio sobre ti cuando trabajas como parte de un equipo de desarrollo. El repositorio remoto o central contendrá cambios y nuevas ramas que otros desarrolladores han creado y enviado al repositorio remoto.

Es muy posible que alguien haya actualizado la copia remota de los archivos que ha modificado localmente en su computadora. Si casualmente realiza un git pull para actualizar su repositorio local, es probable que se encuentre manejando fusiones para cambios que quizás ni siquiera desee.

Una vez que haya descargado la información, puede examinarla y ver cuáles son los cambios. Esto le permite tomar una decisión informada sobre lo que desea fusionar en este momento, en todo caso, y lo que desea diferir hasta más adelante.

Git buscar vs tirar

El comando git fetch se comporta como el comando git pull pero sin el paso que sobrescribe sus archivos locales. Su repositorio local se actualiza y sincroniza, pero los cambios no se escriben en el estado de funcionamiento de su repositorio local, por lo que sus archivos permanecen intactos.

O, para decirlo de otra manera, el comando git pull es como un git fetch seguido inmediatamente por un git merge .

Sincroniza tus repositorios locales y remotos con git fetch

Para obtener todos los metadatos actualizados y confirmaciones de un repositorio remoto a su repositorio local, use el comando git fetch con el nombre o la URL del repositorio remoto. De forma predeterminada, el primer repositorio remoto se llama "origen".

 git buscar origen

Puede omitir la palabra "origen" si está trabajando con un solo repositorio remoto.

 buscar 

Usando el comando git fetch en el repositorio remoto predeterminado

Eso recupera cualquier actualización del repositorio de "origen", pero no fusiona los cambios en los archivos de trabajo. Podemos ver que hay una nueva rama, llamada "nueva rama", que se ha recuperado para nosotros.

Una vez que haya usado el comando fetch , puede ver la lista completa de sucursales en el control remoto, usando la opción -r (remoto) con el comando de sucursal.

 git rama -r 

Mirando las sucursales que existen en el control remoto predeterminado

Esto enumera todas las sucursales que conoce el control remoto, que después de fetch , también están en su repositorio local.

Ver todas las etiquetas obtenidas

De manera similar, puede usar la opción tag (nota, es "etiqueta" sin "s") para ver la lista de etiquetas.

 etiqueta git 

Usando el comando git tag para listar las etiquetas en el repositorio local

RELACIONADO: Cómo cambiar, agregar y eliminar controles remotos de Git

Hacer una carrera en seco primero

Aunque una git fetch no fusiona los cambios en sus archivos de trabajo, aún actualiza su repositorio local. Si desea ver qué cambio realizará el comando fetch , sin hacerlo realmente, use la opción --dry-run .

 git fetch --ejecución en seco 

Usando la opción --dry-run para ver los cambios que recuperaría el comando fetch

Cómo obtener una sola rama

Obtener información sobre una sola sucursal es fácil. Agregue el nombre de la sucursal a la línea de comando para decirle fetch que solo necesita saber sobre esa sucursal.

Aquí le decimos fetch que recupere la rama "mary-feature" del repositorio remoto "origen".

 git fetch origen mary-característica 

Usando git fetch para recuperar una sola rama remota

Ahora que los detalles y el contenido de la sucursal remota están en su repositorio local, puede usar el comando git checkout para crear una nueva sucursal y verificar la sucursal remota. Esto no sobrescribirá ningún archivo existente si es la primera vez que usa esta rama.

 git checkout -b mary-feature origin/mary-feature 

Comprobación segura de una sucursal remota recuperada a una nueva sucursal local

Obtener todas las sucursales

Si usa varios controles remotos, puede ahorrar tiempo extrayendo todos los cambios de todas las sucursales a su repositorio local usando la opción --all .

 git fetch --todos

Comparación de sucursales locales y remotas

Para ver cómo los archivos en una rama remota difieren de sus copias locales, use git fetch y luego use el comando git log .

Tenga en cuenta que las sucursales local y remota tienen dos puntos “ .. ” que las separan. La opción --oneline muestra el identificador de confirmación y el mensaje de confirmación.

 buscar
 git log --oneline mary-feature..origin/mary-feature 

Usar git para obtener los cambios remotos y git log para mostrar los cambios

La visualización de una línea es útil si una rama contiene muchos cambios. Para ver un poco más de información, omita la opción --oneline .

 git log mary-feature..origin/mary-feature 

Omitir la opción --oneline para que git muestre más detalles para cada confirmación

Esto nos muestra la hora y la fecha de cada confirmación, junto con el mensaje de confirmación y los datos de contacto del autor del cambio.

Sincronización de una sucursal local con una sucursal remota

Si ha decidido que desea continuar y fusionar los cambios de la rama remota con sus archivos de trabajo locales, puede usar estos comandos.

Verificaremos la sucursal para asegurarnos de que estamos trabajando, es nuestra sucursal actual y en funcionamiento.

 git checkout mary-característica 

Revisando una sucursal

La rama está verificada para nosotros y se nos dice que está detrás de la versión remota. Podemos usar git pull para actualizarlo, luego git status para verificar nuestro estado.

 tirar de git
 estado de Git 

Extraer cambios del repositorio de rmeote al local

Si hemos realizado algunos cambios en nuestros archivos locales, Git nos informa cuando revisamos la rama que necesitaremos realizar un git pull para iniciar una fusión.

 git checkout mary-característica 

Git nos informa que las ramas local y remota se han separado y deben fusionarse

Un simple git pull inicia el proceso de recuperación de archivos y fusión, o podemos sumergirnos directamente y usar git merge . Comenzaremos por asegurarnos de que estamos trabajando con la rama correcta

 git checkout mary-característica 

Git nos informa que las ramas local y remota se han separado y deben fusionarse

Le diremos a git que fusione nuestra rama actual con la rama en el repositorio remoto, hay seis confirmaciones diferentes que deben resolverse.

Un mensaje de fusión exitoso

Necesitamos decirle a Git qué rama remota queremos fusionar.

 git merge origin/mary-característica 

usando git merge para fusionar los cambios remotos en una rama local

Se abre un editor que nos permite proporcionar un mensaje de confirmación. Podemos aceptar el mensaje sugerido, o agregar el nuestro. El editor es su editor predeterminado a menos que Git se haya configurado para usar un editor diferente.

Editando el mensaje de confirmación

Guarde sus cambios cuando esté listo para continuar. La combinación continúa automáticamente cuando se cierra el editor.

Nuestra fusión fue exitosa porque no hubo conflictos.

Un mensaje de fusión exitoso

Los conflictos surgen cuando dos o más desarrolladores modifican las mismas líneas de código. Si ese es el caso, Git marca los conflictos en el archivo afectado. Deberá revisarlos uno por uno y elegir qué cambio desea conservar.

El cachorro a medio entrenar

Al igual que un cachorro en entrenamiento, fetch recuperará lo que pidas, pero no lo dejará caer. Si realmente quieres lo que el cachorro te ha mostrado, tendrás que pull .

RELACIONADO: Git rebase: Todo lo que necesitas saber