2010-05-21 15 views
212

¿Cuál es la diferencia entre git pull origin master y git pull origin/master?Diferencias entre el origen de origen de extracción de git y el origen/maestro de extracción de git

+1

calmh prácticamente lo tiene cubierto, pero la falta de respuesta es que nunca deberías hacer 'git pull origin/master'. Si desea fusionar la rama remota [origen almacenado] 'origen/maestro', simplemente use' git merge origin/master'. – Cascabel

+3

@Jefromi: ¿Puedes explicar por qué siempre es mejor hacer git merge en comparación con git pull? – Rachel

+13

'git pull' significa' git fetch' seguido de 'git merge'. Retira el contenido del control remoto y luego lo fusiona en su rama actual. Pero 'origin/master' es una rama local (rastrear una rama remota). Si desea fusionarlo, no necesita buscar nada. Es engañoso decir 'git pull origin/master' cuando en realidad no se está obteniendo de un control remoto. – Cascabel

Respuesta

257

git pull origin master extraerá los cambios del control remoto origin, master y los fusionará a la sucursal local desprotegida.

git pull origin/master extraerá los cambios de la rama almacenada localmente origin/master y los fusionará a la rama local desprotegida. La rama origin/master es esencialmente una "copia en caché" de lo que se retiró por última vez de origin, por lo que se llama una rama remota en el lenguaje git. Esto podría ser algo confuso.

Puede ver qué ramas están disponibles con git branch y git branch -r para ver las "ramas remotas".

+0

en caso de 'git pull origin master' siempre se fusionará con la rama principal, digamos que estoy en otra rama de mi repositorio y luego estoy haciendo el comando anterior, ¿actualizará mi rama actual con los cambios remotos de origen o mi rama maestra con los cambios? – Rachel

+0

Mi respuesta fue en realidad un poco incorrecta. :) Lo he actualizado. La respuesta a su pregunta es que, en cualquier caso, se fusionará con su sucursal actual. Para evitar fusionarse con su rama actual, necesita '' git fetch'' y '' git merge'' por separado. –

+3

@calmh: 'git merge' (y por lo tanto' git pull') siempre se funde en la rama actual. Para fusionarte con algo que no sea tu sucursal actual, simplemente échale un vistazo primero. – Cascabel

Cuestiones relacionadas