Git Fetch: una clase magistral
Publicado: 2023-02-26 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.
¿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
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
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
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
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
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
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
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
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
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
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
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
Le diremos a git
que fusione nuestra rama actual con la rama en el repositorio remoto, hay seis confirmaciones diferentes que deben resolverse.
Necesitamos decirle a Git qué rama remota queremos fusionar.
git merge origin/mary-característica
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.
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.
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