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.
- El comando
git fetch
- 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
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
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 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.
LinkedInArtículo relacionado - Git Merge
- Archivos no combinados de Git
- Combinar la rama de desarrollo en el maestro
- Combinar selectivamente los cambios de diferentes ramas en Git
- Comprender los marcadores de conflicto de Git
- Diferencia entre Git Merge Master y Git Merge Origin/Master