Buscar..


Introducción

A diferencia de empujar con Git donde los cambios locales se envían al servidor del repositorio central, tirar con Git toma el código actual en el servidor y lo "arrastra" desde el servidor del repositorio a su máquina local. Este tema explica el proceso de extracción de código de un repositorio con Git, así como las situaciones que se pueden encontrar al extraer un código diferente en la copia local.

Sintaxis

  • git pull [opciones [<repository> [<refspec> ...]]

Parámetros

Parámetros Detalles
--quiet No hay salida de texto
-q taquigrafía de --quiet
--verbose salida de texto detallado. Pasado a buscar y fusionar / rebase los comandos respectivamente.
-v taquigrafía para --verbose
--[no-]recurse-submodules[=yes | on-demand | no] ¿Recuperar nuevas confirmaciones para submódulos? (No es que esto no sea un pull / checkout)

Observaciones

git pull ejecuta git fetch con los parámetros dados y llama a git merge para combinar las cabezas de rama recuperadas en la rama actual.

Actualización con cambios locales.

Cuando hay cambios locales presentes, el comando git pull cancela los informes:

error: sus cambios locales en los siguientes archivos se sobrescribirían mediante la combinación

Para actualizar (como svn update hizo con subversion), puede ejecutar:

git stash
git pull --rebase 
git stash pop

Una forma conveniente podría ser definir un alias usando:

2.9
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
2.9
git config --global alias.up 'pull --rebase --autostash'

A continuación, simplemente puede utilizar:

git up

Extraiga el código del control remoto

git pull

Tirar, sobrescribir local

git fetch
git reset --hard origin/master

Cuidado: mientras que las confirmaciones se descartan usando reset --hard se pueden recuperar usando el reflog reset y reset , los cambios no confirmados se eliminan para siempre.

Cambie el origin y el master al control remoto y la rama a la que desea tirar a la fuerza, respectivamente, si tienen un nombre diferente.

Manteniendo la historia lineal al tirar.

Rebasando al tirar

Si está obteniendo nuevas confirmaciones del repositorio remoto y tiene cambios locales en la rama actual, entonces git fusionará automáticamente la versión remota y su versión. Si desea reducir el número de fusiones en su sucursal, puede decirle a git que vuelva a escribir sus confirmaciones en la versión remota de la sucursal.

git pull --rebase

Haciéndolo el comportamiento por defecto

Para hacer que este sea el comportamiento predeterminado para las sucursales recién creadas, escriba el siguiente comando:

git config branch.autosetuprebase always

Para cambiar el comportamiento de una rama existente, usa esto:

git config branch.BRANCH_NAME.rebase true

Y

git pull --no-rebase

Para realizar un tirón de fusión normal.


Compruebe si se puede avanzar rápidamente

Para permitir solo el reenvío rápido de la sucursal local, puede utilizar:

git pull --ff-only

Esto mostrará un error cuando la sucursal local no sea de reenvío rápido y deba ser rebasada o fusionada con el flujo ascendente.

Pull, "permiso denegado"

Algunos problemas pueden ocurrir si la carpeta .git tiene un permiso incorrecto. Solucionar este problema configurando el propietario de la carpeta .git completa. A veces sucede que otro usuario extrae y cambia los derechos de la carpeta o los archivos .git .

Para solucionar el problema:

chown -R youruser:yourgroup .git/

Tirando de los cambios a un repositorio local

Tirón simple

Cuando esté trabajando en un repositorio remoto (por ejemplo, GitHub) con otra persona, en algún momento querrá compartir sus cambios con ellos. Una vez que hayan enviado sus cambios a un repositorio remoto, puede recuperar esos cambios extrayendo de este repositorio.

git pull

Lo hará, en la mayoría de los casos.


Tire de un control remoto o rama diferente

Puede extraer cambios desde un remoto o rama diferente especificando sus nombres

git pull origin feature-A

Extraerá el origin formulario de la feature-A la rama en su sucursal local. Tenga en cuenta que puede proporcionar directamente una URL en lugar de un nombre remoto, y un nombre de objeto como un SHA de confirmación en lugar de un nombre de rama.


Tirón manual

Para imitar el comportamiento de un git pull, puedes usar git fetch y git merge

git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge

Esto le puede dar más control y le permite inspeccionar la sucursal remota antes de fusionarla. De hecho, después de la captura, puedes ver las ramas remotas con git branch -a , y verificarlas con

git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge

Esto puede ser muy útil al procesar solicitudes de extracción.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow