Diferencia entre Git Merge Origin/Master y Git Pull

John Wachira 15 febrero 2024
Diferencia entre Git Merge Origin/Master y Git Pull

Este artículo describe las diferencias entre los comandos git merge origin/master y git pull. Los dos comandos integran los cambios de un repositorio remoto a la rama local actual.

Sin embargo, cada comando opera de manera única y tiene diferentes casos de uso, como veremos en breve. Este es el lugar correcto si eres nuevo en Git y tienes problemas con los dos comandos.

Diferencia entre git merge origin/master y git pull

Comenzaremos analizando cada comando para derivar la diferencia clave. Comencemos con el comando git pull.

el comando git pull

Según la documentación de Git, por defecto, el comando git pull es una combinación de dos comandos.

  1. El comando git fetch
  2. El comando git merge Fetch_Head

El comando git push obtendrá los cambios del repositorio remoto e invocará el comando git merge para fusionar Fetch_Head con la rama local desprotegida.

En términos más simples, Fetch_Head es la referencia que realiza un seguimiento de lo que se ha obtenido. Almacenará la confirmación en la punta de todas las ramas remotas.

El comando git pull requiere que su sucursal local tenga una sucursal de seguimiento remoto. Una rama de seguimiento remoto es una rama en el repositorio remoto a la que su rama local extrae cambios y los envía.

Si no ha configurado una sucursal de seguimiento remoto para su sucursal local, el comando git pull por sí solo fallará. Tendrá que especificar una sucursal remota en tal situación.

el comando git merge origin/master

El git merge origin/master integra los cambios de la rama master remota a la rama actual. Por sí solo, el comando git merge origin/master no afecta a las sucursales locales.

Primero deberá ejecutar el comando git fetch ya que su repositorio local no está al tanto de los cambios en el repositorio remoto.

Combinado con el comando git fetch, el comando git merge origin/master funciona como el comando git pull. Sin embargo, no requiere una sucursal de seguimiento remoto.

Tome este escenario hipotético:

En nuestro repositorio tenemos la rama master. Hemos creado una rama de desarrollo donde hacemos ediciones, las fusionamos con el maestro y las empujamos al repositorio remoto.

Otros desarrolladores que trabajan en el mismo proyecto siguen el mismo flujo de trabajo.

Tenemos nuevos cambios en la rama maestra remota, y queremos llevar los cambios directamente a nuestra rama desarrollo sin actualizar la rama maestra. ¿Cómo hacemos esto?

Dado que nuestra rama local de desarrollo no tiene una rama de seguimiento remoto, el comando git pull no funcionará.

Debemos obtener los cambios del repositorio remoto y fusionarlos directamente con la rama desarrollo. Aquí es donde entra en juego el comando git merge origin/master.

Para buscar desde el control remoto, ejecutaremos:

$ git fetch

buscar

Tenga en cuenta que esto solo descarga los cambios pero no actualiza nada. Para fusionar los cambios en nuestra rama desarrollo, ejecutaremos:

$ git merge origin/master

maestro de origen git merge

Por otro lado, si estuviéramos desprotegidos en la rama maestra local, el comando git pull habría funcionado y actualizado la rama maestra.

Usamos el comando git pull para integrar los cambios en nuestra sucursal local, siempre que la sucursal tenga una sucursal de seguimiento remoto. Por otro lado, el comando git merge origin/master incorpora cambios desde la rama remota master a la rama local actual.

Deberá buscar desde el repositorio remoto antes de invocar el comando.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Artículo relacionado - Git Merge

Artículo relacionado - Git Pull