Diferencias entre git pull origin master y git pull origin / master

283

¿Cuál es la diferencia entre git pull origin mastery git pull origin/master?

Rachel
fuente
1
calmh prácticamente lo tiene cubierto, pero la falta de respuesta es que nunca deberías hacerlo git pull origin/master. Si desea fusionar la rama remota [almacenada localmente] origin/master, 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
16
git pullsignifica git fetchseguido por git merge. Obtiene el contenido del control remoto, luego lo combina en su rama actual. Pero origin/masteres una sucursal local (seguimiento de una sucursal remota). Si desea fusionarlo, no necesita buscar nada. Es engañoso decir git pull origin/mastercuando en realidad no estás buscando desde un control remoto.
Cascabel
Gracias Jefromi por la información útil. Realmente ayuda a entender bastante fácilmente el concepto no tan fácil.
Rachel
Para aquellos que leen esto y todavía están confundidos, origin/masteres una rama almacenada localmente que almacena en caché la rama maestra en el origen remoto.
iheanyi

Respuestas:

354

git pull origin masterextraerá los cambios del origincontrol remoto, se masterbifurcará y los fusionará con la rama local desprotegida.

git pull origin/masterextraerá los cambios de la rama almacenada localmente origin/mastery la fusionará con la rama local desprotegida. La origin/masterrama es esencialmente una "copia en caché" de lo que se extrajo por última vez origin, por lo que se llama una rama remota en lenguaje git. Esto puede ser algo confuso.

Puede ver qué ramas están disponibles git branchy git branch -rver las "ramas remotas".

Jakob Borg
fuente
1
en caso de git pull origin masterque siempre se fusione con la rama maestra, digamos que estoy en otra rama en 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
44
@calmh: git merge(y por lo tanto git pull) siempre se fusiona en la rama actual. Para fusionarse con algo que no sea su rama actual, simplemente compruébelo primero.
Cascabel
2
um .. No veo cómo 'origen / maestro' es diferente de 'origen maestro'; Ambos son la rama maestra en origen. ¿Puedes dar un ejemplo de cuándo serían diferentes?
hasen
69
git pull origin/masterpuede haber sido un comando válido cuando se escribió esto, pero hoy en día (git 1.7.10.3) falla fatal: 'origin/master' does not appear to be a git repository(como debería, pull siempre es para extraer desde remotos).
user1338062
3
¿Por qué es tan confuso git? Entonces tenemos 4 repositorios totalmente, ¿correcto? Hay un (1) repositorio remoto, (2) un repositorio local, (3) un repositorio de ensayo, (4) un origen / maestro local-remoto también conocido como? ¿Por qué git tendría el repositorio n. ° 4?
Mugen
3

git pull origin masterbuscará todos los cambios desde la rama maestra del control remoto y los combinará en su local. Generalmente no usamos git pull origin / master. Podemos hacer lo mismo al git merge origin/master. Combinará todos los cambios de la "copia en caché" de la rama maestra del origen en su rama local. En mi caso git pull origin/masteres arrojar el error.

Dhruvil Shah
fuente
1

git pull= git fetch+git merge origin/branch

git pully git pull origin branchsolo difieren en que este último solo "actualizará" el origen / rama y no todo el origen / * como lo git pullhace.

git pull origin/branchsimplemente no funcionará porque está tratando de hacer algo git fetch origin/branchque no es válido.

Pregunta relacionada: git fetch + git merge origin / master vs git pull origin / master

usuario33276346
fuente