# git pull

El comando `git pull` se usa para buscar y descargar contenido de un repositorio remoto y actualizar inmediatamente el repositorio local para que coincida con ese contenido. La fusión de cambios ascendentes remotos en su repositorio local es una tarea común en los flujos de trabajo de colaboración basados ​​en Git. El `git pull`comando es en realidad una combinación de otros dos comandos, [`git fetch`](https://www.atlassian.com/git/tutorials/syncing/git-fetch) seguidos de [`git merge`](https://www.atlassian.com/git/tutorials/using-branches/git-merge). En la primera etapa de la operación `git pull`se ejecutará un `git fetch`alcance a la rama local a la que `HEAD`se apunta. Una vez que se descargue el contenido, `git pull`ingresará a un flujo de trabajo de combinación. Se creará y `HEAD`actualizará una nueva confirmación de fusión para apuntar a la nueva confirmación.

### Uso de Git pull

### Cómo funciona

El `git pull`comando primero ejecuta `git fetch`qué descarga contenido del repositorio remoto especificado. Luego `git merge`se ejecuta a para fusionar las referencias de contenido remoto y se dirige a una nueva confirmación de fusión local. Para demostrar mejor el proceso de extracción y fusión, consideremos el siguiente ejemplo. Supongamos que tenemos un repositorio con una rama maestra y un origen remoto.![](https://wac-cdn.atlassian.com/dam/jcr:00d011ed-03dc-440f-afc5-9b13d5e14fbf/bubble%20diagram-01.svg?cdnVersion=1379)

![](/files/-MOpQTxJDlb3aG3QZm6V)

En este escenario, `git pull`descargará todos los cambios desde el punto donde el local y el maestro divergieron. En este ejemplo, ese punto es E. `git pull`buscará las confirmaciones remotas divergentes que son ABC. El proceso de extracción creará una nueva confirmación de fusión local que contiene el contenido de las nuevas confirmaciones remotas divergentes.

![](/files/-MOpQlsAKK8UHPXX-whN)

En el diagrama anterior, podemos ver la nueva confirmación H. Esta confirmación es una nueva confirmación de fusión que contiene el contenido de las confirmaciones ABC remotas y tiene un mensaje de registro combinado. Este ejemplo es una de las pocas `git pull`estrategias de fusión. Se `--rebase`puede pasar una opción a `git pull`para usar una estrategia de fusión de rebase en lugar de una confirmación de fusión. El siguiente ejemplo demostrará cómo funciona una extracción de rebase. Supongamos que estamos en un punto de partida de nuestro primer diagrama y lo hemos ejecutado `git pull --rebase`.

![](/files/-MOpR88cv7PtNNYU1Uck)

En este diagrama, ahora podemos ver que una extracción de rebase no crea la nueva confirmación H. En cambio, la rebase ha copiado las confirmaciones remotas A - B - C y ha reescrito las confirmaciones locales E - F - G para que aparezcan después de ellas en el historial de confirmaciones maestro / origen local.

### Opciones comunes

```
git pull <remote>
```

Obtenga la copia del control remoto especificado de la rama actual y combínela inmediatamente en la copia local. Esto es lo mismo que sigue .`git fetchgit merge origin/`

```
git pull --no-commit <remote>
```

Similar a la invocación predeterminada, obtiene el contenido remoto pero no crea una nueva confirmación de fusión.

```
git pull --rebase <remote>
```

Igual que el pull anterior En lugar de usar `git merge`para integrar la rama remota con la local, use [`git rebase`](https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase).

```
git pull --verbose
```

Proporciona una salida detallada durante una extracción que muestra el contenido que se descarga y los detalles de la combinación.

### Discusión de git pull

Puede pensar `git pull`en la versión de Git de `svn update`. Es una forma sencilla de sincronizar su repositorio local con los cambios anteriores. El siguiente diagrama explica cada paso del proceso de extracción.![](https://wac-cdn.atlassian.com/dam/jcr:60943ee2-bec2-4433-8216-885c4bd3c2b9/03.svg?cdnVersion=1379)

Empieza pensando que su repositorio está sincronizado, pero luego `git fetch`revela que la versión original del maestro ha progresado desde la última vez que lo verificó. Luego `git merge`integra inmediatamente el maestro remoto en el local.

### Git pull y sincronización

`git pull`es uno de los muchos comandos que se atribuyen la responsabilidad de "sincronizar" el contenido remoto. El [`git remote`](https://www.atlassian.com/git/tutorials/syncing) comando se utiliza para especificar en qué puntos finales remotos operarán los comandos de sincronización. El [`git push`](https://www.atlassian.com/git/tutorials/syncing/git-push) comando se usa para cargar contenido en un repositorio remoto.

El `git fetch`comando se puede confundir con `git pull`. Ambos se utilizan para descargar contenido remoto. Se puede hacer una distinción de seguridad importante entre `git pull`y `get fetch`. `git fetch`puede considerarse la opción "segura" mientras que, `git pull`puede considerarse insegura. `git fetch`descargará el contenido remoto y no alterará el estado del repositorio local. Alternativamente, `git pull`descargará contenido remoto e inmediatamente intentará cambiar el estado local para que coincida con ese contenido. Esto puede causar involuntariamente que el repositorio local entre en un estado conflictivo.

### Tirando a través de Rebase

La `--rebase`opción se puede utilizar para garantizar un historial lineal al evitar confirmaciones de fusión innecesarias. Muchos desarrolladores prefieren reajustar a la fusión, ya que es como decir: "Quiero poner mis cambios encima de lo que todos los demás han hecho". En este sentido, usar `git pull`con la `--rebase`bandera es incluso más parecido `svn update`a un simple `git pull`.

De hecho, extraer con `--rebase`es un flujo de trabajo tan común que existe una opción de configuración dedicada para ello:

```
git config --global branch.autosetuprebase always
```

Después de ejecutar ese comando, todos los `git pull`comandos se integrarán mediante en `git rebase`lugar de `git merge`.

### Ejemplos de Git Pull

Los siguientes ejemplos demuestran cómo usarlo `git pull`en escenarios comunes:

### Comportamiento por defecto

```
git pull
```

Ejecutar la invocación predeterminada de `git pull`will es equivalente a `git fetch origin HEAD`y `git merge HEAD`where `HEAD`es ref que apunta a la rama actual.

### Git tire de los controles remotos

```
git checkout new_feature
git pull <remote repo>
```

Este ejemplo primero realiza un pago y cambia al rama. Después de eso, `git pull`se ejecuta consiendo pasado. Esto hará descender implícitamente la rama nueva de. Una vez que se complete la descarga, se iniciará un archivo `git merge`.

### Git pull rebase en lugar de fusionar

El siguiente ejemplo demuestra cómo sincronizar con la rama maestra del repositorio central usando una rebase:

```
git checkout master
git pull --rebase origin
```

Esto simplemente mueve sus cambios locales a la parte superior de lo que todos los demás ya han contribuido.<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://oscar-mesa.gitbook.io/git/sincronizacion-de-git/git-pull.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
