Obtener cambios remotos con git fetch
En este paso, aprenderemos cómo obtener cambios de un repositorio remoto. Imagina que estás trabajando en un proyecto con otros y ellos han realizado algunas actualizaciones. Necesitas traer esas actualizaciones a tu máquina local. El comando git fetch
es la forma de hacerlo. Descarga los últimos cambios de un repositorio remoto, pero no los fusiona en tu rama actual.
Primero, simulemos tener un repositorio remoto. Crearemos un repositorio desnudo (bare repository) y luego lo agregaremos como remoto a nuestro repositorio my-time-machine
existente.
cd ~/project
mkdir remote-repo.git
cd remote-repo.git
git init --bare
Esto crea un repositorio Git desnudo, que se utiliza típicamente como un repositorio central del que los desarrolladores realizan operaciones de push y pull.
Ahora, volvamos a nuestro repositorio my-time-machine
y agreguemos este repositorio desnudo como remoto.
cd ~/project/my-time-machine
git remote add origin ~/project/remote-repo.git
Hemos nombrado nuestro remoto origin
, que es una convención común. Ahora, verifiquemos que el remoto se haya agregado correctamente.
git remote -v
Deberías ver una salida similar a esta, que muestra las URLs de fetch y push para el remoto origin
:
origin /home/labex/project/remote-repo.git (fetch)
origin /home/labex/project/remote-repo.git (push)
Ahora, simulemos un cambio en el repositorio remoto. Dado que es un repositorio desnudo, no podemos realizar commits directamente en él. En lugar de eso, simularemos un cambio creando un nuevo archivo en el directorio del repositorio desnudo.
cd ~/project/remote-repo.git
echo "This is a remote change" > remote_file.txt
Ahora, regresa a tu repositorio my-time-machine
.
cd ~/project/my-time-machine
En este punto, tu repositorio local no sabe nada del archivo remote_file.txt
que se agregó al repositorio remoto simulado. Aquí es donde entra en juego git fetch
.
Ejecuta el comando git fetch
:
git fetch origin
Puede que no veas mucha salida, o puede que veas algo que indique que se recibieron nuevos objetos.
Lo que hizo git fetch origin
fue conectarse al remoto origin
y descargar cualquier nuevo commit y objeto que no esté en tu repositorio local. Sin embargo, no fusionó estos cambios en tu rama actual (master
). Los cambios ahora están disponibles en tu repositorio local, pero se almacenan en una rama especial que sigue al remoto, típicamente llamada origin/master
.
Esta es una diferencia clave entre git fetch
y git pull
. git pull
es esencialmente git fetch
seguido de una fusión. Al usar primero git fetch
, puedes ver qué cambios están disponibles en el remoto antes de decidir integrarlos en tu trabajo. Esto te da más control y ayuda a prevenir conflictos inesperados.
En el siguiente paso, veremos cómo comparar tu rama local con la rama remota obtenida para entender qué cambios se descargaron.