Actualización de un repositorio local con cambios desde un repositorio de GitHub

567

Tengo un proyecto revisado localmente desde GitHub, y ese repositorio remoto ha tenido cambios desde entonces. ¿Cuál es el comando correcto para actualizar mi copia local con los últimos cambios?

Tom
fuente
26
Vale la pena señalar que github ha producido un conjunto de guías muy informativas y útiles para usar git y github. Los encontré invaluables cuando hice el primer movimiento a git. help.github.com
Mark Embling

Respuestas:

791

Probablemente:

git pull origin master
James Healy
fuente
28
Se quejó: "Usted solicitó extraer desde el 'origen' remoto, pero no especificó una rama. Debido a que este no es el control remoto configurado por defecto para su rama actual, debe especificar una rama en la línea de comando". Así que probé "$ git pull origin master" y funcionó bien.
Juan Lanus
8
git pull origin master
Andrzej Rehmann
1
Eliminé algunos archivos y no los vuelvo a traer, ¿alguna idea?
Acuario Power
1
¿Hacemos un git commit antes de ejecutar esto? ¡cada vez que ejecuto este comando, termino con 18347213846 archivos modificados que ni siquiera toqué!
Orkun Ozen
55
Aprendí de la manera difícil que extraer una nueva rama del repositorio remoto no crea una rama de ese nombre localmente, sino que extrae esa rama remota en cualquier rama local que se extraiga. No estoy seguro de cómo deshacer este corto de zanjas y volver a clonar el repositorio. En cualquier caso, parece que la rama local es independiente de la rama remota y uno siempre debe asegurarse de estar en la rama local prevista antes de tirar.
Joe Lapp
87

Esto debería funcionar para cada repositorio predeterminado:

git pull origin master

Si su rama predeterminada es diferente a master, deberá especificar el nombre de la rama:

git pull origin my_default_branch_name
Andrzej Rehmann
fuente
2
Realmente no. fatal: No se pudo encontrar el maestro de referencia remoto
Victor Eijkhout
1
@Eijkhout probablt En su caso de repositorio no hay una rama maestra, y alguna otra rama está configurada por defecto
Andrzej Rehmann
62
git fetch [remotename]

Sin embargo, deberá fusionar cualquier cambio en sus sucursales locales. Si estás en una rama que rastrea una rama remota en Github, entonces

git pull

primero buscará y luego se fusionará en la rama rastreada

Gareth
fuente
55
Si está utilizando el git fetchmétodo, también querrá buscar etiquetas con git fetch -t. Si está satisfecho con los cambios ( git log HEAD..FETCH_HEAD), puede fusionarlos con git merge FETCH_HEAD.
Brad Grissom
16

Esta pregunta es muy general y hay un par de suposiciones que haré para simplificarla un poco. Asumiremos que desea actualizar su mastersucursal.

Si no ha realizado ningún cambio a nivel local, puede usarlo git pullpara reducir las nuevas confirmaciones y agregarlas a su master.

git pull origin master

Si ha realizado cambios y desea evitar agregar una nueva confirmación de fusión, use git pull --rebase.

git pull --rebase origin master

git pull --rebase funcionará incluso si no ha realizado cambios y es probablemente su mejor opción.

Mahavir Chhasatiya
fuente
1
Rebase y los peligros de rebase: atlassian.com/git/tutorials/rewriting-history/git-rebase . Los párrafos 2 y 3 de "Comprender los peligros de rebase" realmente me hacen extrañar el conjunto de comandos de SVN.
WillC
9

Con un maestro de origen ya establecido, solo tiene que usar el siguiente comando:

git pull "https://github.com/yourUserName/yourRepo.git"
Shailendra
fuente