Saltar al contenido

git pull

Definición

El comando git pull obtiene y descarga contenido del repositorio remoto e integra los cambios en el repositorio local. El comando git pull se ejecuta como la combinación de git fetch seguido de git merge.

gitpull

Uso de git pull

El comando git pull es uno de los comandos que participan en el proceso de "sincronización". Estos comandos funcionan en las ramas remotas que se configuran con el comando git remote. Los commits se suben con git push y se descargan con git fetch y git pull. Después de realizar cambios en ambos casos, se utiliza git merge para integrar los cambios. Tanto git fetch como git pull se utilizan para descargar el contenido del repositorio remoto. El comando git fetch no obliga a fusionar los cambios en el repositorio, mientras que el comando git pull no solo descarga el contenido remoto, sino que también lo fusiona con la copia de trabajo actual.

Cómo funciona

Para entender el proceso de pull y fusión, supongamos el siguiente ejemplo. Hay un repositorio con una rama master y un origen remoto. El comando git pull descarga los cambios desde el punto donde las ramas local y master divergieron. La ilustración muestra que ese punto es E. Aquí puedes ver los commits remotos A, B y C que serán obtenidos por git pull. Luego, se creará un nuevo commit de fusión local con el contenido de los nuevos commits remotos divergentes.

gitpull1

La ilustración muestra el nuevo commit H, que contiene todo el contenido de los commits A, B y C con un mensaje de registro combinado.

gitpull2

El comando git pull con la opción --rebase se utiliza para la fusión en lugar de git merge.

gitpull3

Opciones comunes

ComandoDescripción
git pull <remote>Obtiene el contenido remoto y lo fusiona directamente en la copia local (equivalente a git fetch <remote> seguido de git merge origin/<current-branch>).
git pull --no-commit <remote>Obtiene el contenido remoto pero no crea un commit de fusión.
git pull --rebase <remote>Integra la rama remota con la local.
git pull --verboseMuestra el contenido descargado y los detalles de la fusión, proporcionando una salida detallada durante un pull.

Ejemplos

Invocar git pull sin argumentos obtiene y fusiona cambios desde la rama upstream configurada para la rama actual. HEAD es una referencia que apunta a la rama actual.

git pull

bash
git pull

Obtener cambios de una rama específica de un repositorio remoto:

git pull en remotos

bash
git pull <remote> <branch>

Este comando obtendrá y fusionará los cambios desde la rama especificada del repositorio remoto.

Por ejemplo, si deseas obtener cambios de la rama develop del remoto origin, usarías el siguiente comando:

bash
git pull origin develop

Obtener cambios de un repositorio remoto y rebasear tus cambios sobre ellos:

git pull mediante rebase

bash
git pull --rebase

Este comando obtendrá los cambios del repositorio remoto y rebaseará tus cambios locales sobre ellos, en lugar de fusionarlos. Esto puede ser útil si deseas mantener un historial de commits lineal y evitar commits de fusión.

Obtener cambios de un repositorio remoto sin fusionar automáticamente:

git pull --no-commit

bash
git pull --no-commit

Este comando obtendrá los cambios del repositorio remoto, pero no los fusionará automáticamente en tu rama local. En su lugar, dejará los cambios como cambios preparados (staged), que puedes revisar y confirmar manualmente.

Práctica

¿Cuáles de las siguientes afirmaciones sobre el comando 'git pull' son verdaderas?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.