¿Cuáles son las diferencias entre git pull
y git fetch
?
git
version-control
git-pull
git-fetch
pupeno
fuente
fuente
git fetch; git reset --hard origin/master
en parte de nuestro flujo de trabajo. Elimina los cambios locales, lo mantiene actualizado con master PERO se asegura de que no solo realice nuevos cambios en la parte superior de los cambios actuales y haga un desastre. Lo hemos usado por un tiempo y básicamente se siente mucho más seguro en la práctica. ¡Solo asegúrese de agregar / confirmar / ocultar cualquier trabajo en progreso primero!Respuestas:
En los términos más simples,
git pull
¿agit fetch
seguido de agit merge
.Puede hacer una
git fetch
en cualquier momento para actualizar sus sucursales de seguimiento remoto enrefs/remotes/<remote>/
.Esta operación nunca cambia ninguna de sus sucursales locales
refs/heads
, y es segura sin cambiar su copia de trabajo. Incluso he oído hablar de personas que se ejecutangit fetch
periódicamente en un trabajo cron en segundo plano (aunque no recomendaría hacer esto).A
git pull
es lo que haría para actualizar una sucursal local con su versión remota, al tiempo que actualiza sus otras sucursales de seguimiento remoto.Documentación de git - git pull :
fuente
git pull
siempre se fusionará con la rama actual . Así que selecciona qué rama desea extraer a partir , y se tira de ella en la rama actual. La rama from puede ser local o remota; incluso puede ser una rama remota que no está registradagit remote
(lo que significa que pasa una URL en lagit pull
línea de comando)./home/alice/
y hagogit fetch /home/bob
, ¿qué parámetros debo pasar al siguientegit merge
?pull
realidad no puede ser emulado por unfetch
plus amerge
. Acabo de obtener un cambio donde solo cambia un puntero de rama remoto, y semerge
niega a hacer nada.pull
, por otro lado, avanza rápidamente mi rama de seguimiento.Cuando lo usas
pull
, Git intenta hacer automáticamente tu trabajo por ti. Es sensible al contexto , por lo que Git fusionará cualquier confirmación extraída en la rama en la que está trabajando actualmente.pull
Combina automáticamente las confirmaciones sin permitirle que las revise primero . Si no administra de cerca sus sucursales, puede encontrarse con conflictos frecuentes.Cuando usted
fetch
, Git recopila cualquier confirmación de la rama de destino que no existe en su rama actual y la almacena en su repositorio local . Sin embargo, no los fusiona con su rama actual . Esto es particularmente útil si necesita mantener actualizado su repositorio, pero está trabajando en algo que podría romperse si actualiza sus archivos. Para integrar los commits en su rama maestra, usted usamerge
.fuente
git fetch
solo actualiza su.git/
directorio (AKA: repositorio local) y nada fuera.git/
(AKA: árbol de trabajo). No cambia sus sucursales locales, y tampoco tocamaster
. Sinremotes/origin/master
embargo, toca (vergit branch -avv
). Si tienes más controles remotos, inténtalogit remote update
. Esto esgit fetch
para todos los controles remotos en un solo comando..git/refs/remotes/origin/
..git
? ¿Cuál es el beneficio previsto y qué se supone que debo hacer después de eso?Es importante contrastar la filosofía de diseño de git con la filosofía de una herramienta de control de fuente más tradicional como SVN.
Subversion fue diseñado y construido con un modelo cliente / servidor. Hay un único repositorio que es el servidor, y varios clientes pueden obtener el código del servidor, trabajar en él y luego volver a enviarlo al servidor. Se supone que el cliente siempre puede contactar al servidor cuando necesita realizar una operación.
Git fue diseñado para admitir un modelo más distribuido sin necesidad de un repositorio central (aunque ciertamente puede usar uno si lo desea). También git fue diseñado para que el cliente y el "servidor" no necesiten estar en línea al mismo tiempo. Git fue diseñado para que las personas en un enlace poco confiable pudieran intercambiar código por correo electrónico, incluso. Es posible trabajar completamente desconectado y grabar un CD para intercambiar código a través de git.
Para admitir este modelo, git mantiene un repositorio local con su código y también un repositorio local adicional que refleja el estado del repositorio remoto. Al mantener una copia del repositorio remoto localmente, git puede descubrir los cambios necesarios incluso cuando no se puede acceder al repositorio remoto. Más adelante, cuando necesite enviar los cambios a otra persona, git puede transferirlos como un conjunto de cambios desde un punto en el tiempo conocido por el repositorio remoto.
git fetch
es el comando que dice "actualizar mi copia local del repositorio remoto".git pull
dice "llevar los cambios en el repositorio remoto a donde guardo mi propio código".Normalmente lo
git pull
hace haciendo ungit fetch
para actualizar la copia local del repositorio remoto y luego fusionando los cambios en su propio repositorio de código y posiblemente su copia de trabajo.La conclusión es tener en cuenta que a menudo hay al menos tres copias de un proyecto en su estación de trabajo. Una copia es su propio repositorio con su propio historial de confirmación. La segunda copia es su copia de trabajo donde está editando y construyendo. La tercera copia es su copia local "en caché" de un repositorio remoto.
fuente
remoteName/
Git desde cero, es una muy buena lectura. Una vez que entiendes cómo funciona Git, y es realmente simple , todo tiene sentido.Aquí está la imagen de Oliver Steele de cómo encaja todo :
Si hay suficiente interés, supongo que podría actualizar la imagen para agregar
git clone
ygit merge
...fuente
git clone
ygit merge
sería muy útil!git merge
: debe mostrar claramente quemerge
llamar por separado NO es lo mismo que llamarpull
porque sepull
está fusionando solo desde remoto e ignora sus confirmaciones locales en su rama local que está rastreando la rama remota desde la que se extrae.Un caso de uso
git fetch
es que lo siguiente le indicará cualquier cambio en la rama remota desde su última extracción ... para que pueda verificar antes de realizar una extracción real, lo que podría cambiar los archivos en su rama actual y copia de trabajo.Consulte: https://git-scm.com/docs/git-diff con respecto a la sintaxis de doble y triple punto en el comando diff
fuente
git diff ..origin
?git diff ...origin
es equivalente agit diff $(git-merge-base HEAD origin) origin
(vea lagit diff [--options] <commit>...<commit> [--] [<path>…]
sección de kernel.org/pub/software/scm/git/docs/git-diff.html#_description ), que es diferente degit diff origin
;git diff ...origin
es conceptualmente los cambios realizadosorigin
desde que la rama actual se bifurcóorigin
, mientras quegit diff origin
también incluye el reverso de los cambios realizados en la rama actual desde que se bifurcóorigin
.git diff origin/master
funciona, como se menciona a continuaciónMe costó un poco entender cuál era la diferencia, pero esta es una explicación simple.
master
en tu localhost hay una rama.Cuando clonas un repositorio, obtienes todo el repositorio para tu host local. Esto significa que en ese momento tiene un puntero de origen / maestro
HEAD
y un maestro apuntando al mismoHEAD
.cuando empiezas a trabajar y haces commits avanzas el puntero maestro a
HEAD
+ tus commits. Pero el puntero de origen / maestro todavía apunta a lo que era cuando clonó.Entonces la diferencia será:
git fetch
, solo obtendrá todos los cambios en el repositorio remoto ( GitHub ) y moverá el puntero de origen / maestro aHEAD
. Mientras tanto, su maestro de sucursal local seguirá señalando hacia dónde tiene.git pull
, básicamente buscará (como se explicó anteriormente) y combinará cualquier cambio nuevo en su rama maestra y moverá el puntero aHEAD
.fuente
git fetch
que, literalmente, debía descargar los cambios en el repositorio remoto en su repositorio local, pero NO confirmarlos, es decir, aún deben agregarse / confirmarse en su repositorio local.A veces, una representación visual ayuda.
fuente
git pull
está omitiendo la búsqueda, que por supuesto es inexacta.Brevemente
git fetch
es similarpull
pero no se fusiona. es decir, obtiene actualizaciones remotas (refs
yobjects
) pero su local permanece igual (es decir,origin/master
se actualiza peromaster
permanece igual).git pull
se despliega desde un control remoto y se fusiona instantáneamente.Más
git clone
clona un repositorio.git rebase
guarda cosas de su rama actual que no está en la rama aguas arriba en un área temporal. Su rama ahora es la misma que antes de comenzar sus cambios. Por lo tanto,git pull -rebase
desplegará los cambios remotos, rebobinará su sucursal local, reproducirá sus cambios en la parte superior de su sucursal actual, uno por uno, hasta que esté actualizado.Además,
git branch -a
le mostrará exactamente lo que está sucediendo con todas sus sucursales, locales y remotas.Esta publicación de blog fue útil:
La diferencia entre git pull, git fetch y git clone (y git rebase) - Mike Pearce
y cubiertas
git pull
,git fetch
,git clone
ygit rebase
.====
ACTUALIZAR
Pensé en actualizar esto para mostrar cómo usarías esto en la práctica.
Actualice su repositorio local desde el control remoto (pero no combine):
Después de descargar las actualizaciones, veamos las diferencias:
Si está satisfecho con esas actualizaciones, combine:
Notas:
En el paso 2: para obtener más información sobre las diferencias entre locales y remotos, consulte: ¿Cómo comparar una rama git local con su rama remota?
En el paso 3: Probablemente sea más preciso (por ejemplo, en un repositorio que cambia rápidamente) hacer un
git rebase origin
aquí. Vea el comentario de @Justin Ohms en otra respuesta.Ver también: http://longair.net/blog/2009/04/16/git-fetch-and-merge/
fuente
git clone
. Pongo el consejo entre comillas, ya que supongo que significaría lo que sea maestro y lo que alguien "descargaría como zip" de github.comTirarías si quisieras fusionar las historias, buscarías si solo 'quieres el codez' ya que alguna persona ha estado etiquetando algunos artículos por aquí.
fuente
git fetch
, recupera los cambios del repositorio y actualiza su sucursal remota local. No afecta a su sucursal local que rastrea la sucursal remota local, por lo que no afecta a su copia de trabajo. Ahora, cuando haga unamerge
, fusionará los cambios recuperados con su sucursal local.Puede buscar desde un repositorio remoto, ver las diferencias y luego extraer o fusionar.
Este es un ejemplo para un repositorio remoto llamado
origin
y una rama llamadamaster
seguimiento de la rama remotaorigin/master
:fuente
La respuesta corta y fácil es que
git pull
simplemente esgit fetch
seguida porgit merge
.Es muy importante tener en cuenta que
git pull
se fusionará automáticamente, le guste o no . Esto podría, por supuesto, dar lugar a conflictos de fusión. Digamos que su control remoto esorigin
y su rama esmaster
. Sigit diff origin/master
antes de tirar, debe tener una idea de posibles conflictos de fusión y podría preparar su sucursal local en consecuencia.Además de tirar y empujar, implican algunos flujos de trabajo
git rebase
, como este, que parafraseo del artículo vinculado:Si te encuentras en una situación así, puedes sentirte tentado a hacerlo
git pull --rebase
. A menos que realmente sepas lo que estás haciendo, te aconsejaría que no. Esta advertencia es de laman
página para lagit-pull
versión2.3.5
:fuente
git pull --rebase
no es lo correcto en la situación dada, ¿es correcto si se hace en dos pasos? Si es lo correcto, ¿cuál es el beneficio adicional de hacerlo en dos pasos?rebase
cuando trabaje en una sucursal local que aún no se haya enviado. Si está trabajando en una rama que existe en el control remoto,rebase
puede ocasionar algunos problemas desagradables, por lo que debe preferir una regularmerge
.OK , aquí hay información sobre ,
git pull
ygit fetch
para que pueda comprender las diferencias reales ... en pocas palabras, fetch obtiene los datos más recientes, pero no los cambios en el código y no va a alterar su código de sucursal local actual, pero tire get el código cambia y se fusiona con su sucursal local, siga leyendo para obtener más detalles sobre cada uno:git fetch
Descargará todas las referencias y objetos y cualquier rama nueva a su repositorio local ...
git pull
Aplicará los cambios de la sucursal remota a la actual en local ...
También creo el siguiente visual para mostrarle cómo
git fetch
ygit pull
trabajar juntos ...fuente
Esta representación gráfica interactiva es muy útil para comprender git: http://ndpsoftware.com/git-cheatsheet.html
git fetch
simplemente "descarga" los cambios desde el remoto a su repositorio local.git pull
descarga los cambios y los combina en su sucursal actual. "En su modo predeterminado,git pull
es la abreviatura degit fetch
seguido porgit merge FETCH_HEAD
".fuente
Prima:
Al hablar de pull & fetch en las respuestas anteriores, me gustaría compartir un truco interesante,
git pull --rebase
Este comando anterior es el comando más útil en mi vida git que ahorró mucho tiempo.
Antes de enviar sus nuevos commits al servidor, pruebe este comando y sincronizará automáticamente los últimos cambios del servidor (con fetch + merge) y colocará su commit en la parte superior en git log. No necesita preocuparse por la extracción / fusión manual.
Encuentre detalles en: http://gitolite.com/git-pull--rebase
fuente
git pull
ygit pull --rebase
?Me gusta tener una representación visual de la situación para comprender estas cosas. Tal vez a otros desarrolladores también les gustaría verlo, así que aquí está mi adición. No estoy totalmente seguro de que todo sea correcto, así que comente si encuentra algún error.
Algunas de las principales ventajas de tener un espejo del control remoto son:
fuente
git pull
se realiza también una fusión, es decir, ir hasta la copia de trabajo?He luchado con esto también. De hecho, llegué aquí con una búsqueda en Google de exactamente la misma pregunta. Al leer todas estas respuestas, finalmente pinté una imagen en mi cabeza y decidí intentar descifrar esto mirando el estado de los 2 repositorios y 1 caja de arena y las acciones realizadas a lo largo del tiempo mientras miraba la versión de ellas. Así que aquí está lo que se me ocurrió. Por favor corrígeme si me equivoqué en alguna parte.
Los tres repositorios con una búsqueda:
Los tres repos con un tirón
Esto me ayudó a entender por qué una búsqueda es muy importante.
fuente
La diferencia entre GIT Fetch y GIT Pull se puede explicar con el siguiente escenario: (¡Teniendo en cuenta que las imágenes hablan más que las palabras! He proporcionado una representación gráfica)
Tomemos un ejemplo de que está trabajando en un proyecto con los miembros de su equipo. Por lo tanto, será una Rama principal del proyecto y todos los contribuyentes deben bifurcarlo a su propio repositorio local y luego trabajar en esta rama local para modificar / Agregar módulos y luego regresar a la rama principal.
Así, estado inicial de las dos ramas cuando se bifurcó el principal proyecto en su repositorio local será como esto: (
A
,B
yC
son módulos ya se ha completado del proyecto)Ahora, que ha empezado a trabajar en el nuevo módulo (supongamos
D
) y cuando haya completado elD
módulo que desea empujar a la rama principal, pero mientras tanto lo que pasa es que uno de sus compañeros de equipo ha desarrollado un nuevo móduloE
,F
y modificadoC
.Entonces, ahora lo que sucedió es que su repositorio local carece del progreso original del proyecto y, por lo tanto, empujar sus cambios a la rama principal puede provocar conflictos y puede causar un
D
mal funcionamiento de su Módulo .Para evitar tales problemas y trabajar en paralelo con el progreso original del proyecto, hay dos maneras:
1. Git Fetch: esto descargará todos los cambios que se han realizado en el proyecto de sucursal principal / origen que no están presentes en su sucursal local. Y esperará a que el comando Git Merge aplique los cambios que se han obtenido en su Repositorio o rama.
Así que ahora puede monitorear cuidadosamente los archivos antes de fusionarlos en su repositorio. Y también puede modificar
D
si es necesario debido a ModificadoC
.2. Git Pull: esto actualizará su rama local con la rama principal / de origen, es decir, en realidad lo que hace es una combinación de Git Fetch y Git fusionan una tras otra. Pero esto puede causar conflictos, por lo que se recomienda usar Git Pull con una copia limpia.
fuente
Simplemente decimos:
Si ejecuta
git pull
, no necesita fusionar los datos a local. Si ejecutagit fetch
, significa que debe ejecutargit merge
para obtener el código más reciente en su máquina local. De lo contrario, el código de máquina local no se cambiaría sin combinar.Entonces, en Git Gui, cuando obtienes, tienes que fusionar los datos. Fetch en sí no hará los cambios de código en su local. Puede verificar eso cuando actualice el código obteniendo una vez buscar y ver; El código no cambiará. Luego te unes ... Verás el código cambiado.
fuente
git pull == git fetch + git merge
:)git pull --rebase = git fetch + git rebase
git fetch
extrae el código del servidor remoto a sus ramas de seguimiento en su repositorio local. Si el mando a distancia se llamaorigin
(el valor predeterminado), entonces estas ramas estará dentro deorigin/
, por ejemploorigin/master
,origin/mybranch-123
,, etc. Estos no son sus ramas actuales, que son locales copias de esas ramas del servidor.git pull
hace ungit fetch
pero luego también combina el código de la rama de seguimiento en su versión local actual de esa rama. Si aún no está listo para esos cambios, sologit fetch
primero.fuente
git fetch
recuperará ramas remotas para que puedagit diff
ogit merge
ellos con la rama actual.git pull
ejecutará fetch en el brach remoto seguido por la rama actual y luego combinará el resultado. Puede usargit fetch
para ver si hay actualizaciones para la sucursal remota sin necesidad de fusionarlas con su sucursal local.fuente
Git Fetch
Descarga los cambios en su sucursal local desde el origen a través de la búsqueda. Fetch le pide al repositorio remoto todas las confirmaciones que otros han realizado pero que usted no tiene en su repositorio local. Fetch descarga estos commits y los agrega al repositorio local.
Git Merge
Puede aplicar los cambios descargados a través de fetch utilizando el comando merge. Merge tomará los commits recuperados de fetch e intentará agregarlos a su sucursal local. La fusión mantendrá el historial de confirmación de sus cambios locales para que cuando comparta su sucursal con push, Git sepa cómo otros pueden fusionar sus cambios.
Git Pull
Fetch y merge se ejecutan juntos con la frecuencia suficiente para crear un comando que combine los dos, pull. Pull realiza una búsqueda y luego una combinación para agregar los commits descargados a su sucursal local.
fuente
La única diferencia entre
git pull
ygit fetch
es que:git pull
tira de una rama remota y la fusiona.git fetch
solo se obtiene de la rama remota pero no se fusionaes decir, git pull = git fetch + git merge ...
fuente
rm -rf
y comencé de nuevo. Estúpido Git, ¿solo déjame ponerme al día para que pueda volver a trabajar?En términos simples, si estaba a punto de subirse a un avión sin conexión a Internet ... antes de partir, podría hacerlo
git fetch origin <master>
. Obtendría todos los cambios en su computadora, pero lo mantendría separado de su espacio de trabajo / desarrollo local.En el avión, puede realizar cambios en su espacio de trabajo local y luego fusionarlo con lo que ha obtenido y resolver posibles conflictos de fusión, todo sin una conexión a Internet. Y a menos que alguien haya realizado nuevos cambios conflictivos en el repositorio remoto, una vez que llegue al destino, lo haría
git push origin <branch>
e iría a buscar su café.De este increíble tutorial de Atlassian :
Con
git pull
:git merge
.git fetch
donde solo afecta a usted.git/refs/remotes
, git pull afectará tanto a usted.git/refs/remotes
como a.git/refs/heads/
Hmmm ... así que si no estoy actualizando la copia de trabajo
git fetch
, ¿dónde estoy haciendo los cambios? ¿Dónde almacena Git fetch los nuevos commits?Gran pregunta Lo pone en algún lugar aislado de su copia de trabajo. Pero de nuevo, ¿dónde? Vamos a averiguar.
En su directorio de proyecto (es decir, donde realiza sus
git
comandos) haga:ls
. Esto mostrará los archivos y directorios. Nada genial, lo sé.Ahora hazlo
ls -a
. Esto mostrará los archivos de puntos , es decir, archivos que comienzan con.
A continuación, será capaz de ver un directorio llamado:.git
.cd .git
. Obviamente, esto cambiará su directorio.ls
. Verá una lista de directorios. Estamos buscandorefs
. Hacercd refs
.heads
yremotes
. Usecd
para verificar dentro de ellos también.git fetch
que haga actualizará los elementos en el/.git/refs/remotes
directorio. No actualizará nada en el/.git/refs/heads
directorio.git pull
hará primerogit fetch
, actualizará los elementos en el/.git/refs/remotes
directorio, luego se fusionará con su local y luego cambiará la cabecera dentro del/.git/refs/heads
directorio.También se puede encontrar una muy buena respuesta relacionada en ¿Dónde se ubica 'git fetch'? .
Además, busque "notación de barra" en la publicación de convenciones de nomenclatura de rama de Git . Le ayuda a comprender mejor cómo Git coloca las cosas en diferentes directorios.
Para ver la diferencia real
Solo haz:
Si se actualizó el maestro remoto, recibirá un mensaje como este:
Si no lo hiciste
fetch
y lo hicistegit checkout master
, tu git local no sabría que hay 2 commits agregados. Y solo diría:Pero eso está desactualizado e incorrecto. Es porque git te dará comentarios únicamente en función de lo que sabe. Es ajeno a las nuevas confirmaciones que aún no ha eliminado ...
¿Hay alguna forma de ver los nuevos cambios realizados en forma remota mientras se trabaja en la sucursal localmente?
Algunos IDE (por ejemplo, Xcode) son súper inteligentes y utilizan el resultado de
git fetch
ay pueden anotar las líneas de código que se han cambiado en la rama remota de su rama de trabajo actual. Si esa línea ha sido modificada por los cambios locales y la rama remota, entonces esa línea se anota con rojo. Esto no es un conflicto de fusión. Es un posible conflicto de fusión. Es un aviso que puede usar para resolver el futuro conflicto de fusión antes de hacerlogit pull
desde la rama remota.Consejo divertido:
Si buscó una rama remota, por ejemplo:
Entonces esto iría a su directorio de controles remotos. Todavía no está disponible para su directorio local. Sin embargo, simplifica su pago a esa rama remota por DWIM (haga lo que quiero decir):
ya no necesitas hacer:
Para más información sobre eso, lea aquí
fuente
Git permite aplicar confirmaciones cronológicamente más antiguas después de confirmaciones más nuevas. Debido a esto, el acto de transferir confirmaciones entre repositorios se divide en dos pasos:
Copiar nuevas confirmaciones de la rama remota para copiar esta rama remota dentro del repositorio local.
(operación de repositorio a repositorio)
master@remote >> remote/origin/master@local
Integrando nuevos compromisos a la sucursal local
(operación dentro del repositorio)
remote/origin/master@local >> master@local
Hay dos formas de realizar el paso 2. Puede:
En
git
terminología, el paso 1 esgit fetch
, el paso 2 esgit merge
ogit rebase
git pull
esgit fetch
ygit merge
fuente
Git obtiene la rama de la última versión del control remoto al local usando dos comandos:
git fetch: Git obtendrá la última versión de remota a local, pero no se fusionará automáticamente.
git fetch origin master
git log -p master..origin/master
git merge origin/master
Los comandos anteriores significan que descargue la última versión de la rama principal desde el origen desde la rama maestra remota a la original. Y luego compara la rama maestra local y la rama maestra de origen. Finalmente, fusionarse.
git pull: Git obtendrá la última versión del control remoto y se fusionará con el local.
git pull origin master
El comando anterior es el equivalente a
git fetch
ygit merge
. En la práctica,git fetch
quizás sea más seguro porque antes de la fusión podemos ver los cambios y decidir si fusionamos.fuente
Para comprender esto, primero debe comprender que su git local mantiene no solo su repositorio local, sino que también mantiene una copia local del repositorio remoto.
git fetch
actualiza su copia local del repositorio remoto. Por ejemplo, si su repositorio remoto es GitHub, es posible que desee recuperar los cambios realizados en el repositorio remoto en su copia local del repositorio remoto. Esto le permitirá realizar operaciones como comparar o fusionar.git pull
por otro lado, traerá los cambios en el repositorio remoto donde guarda su propio código. Por lo general,git pull
va a hacer unagit fetch
primera para llevar la copia local del repositorio remoto hasta la fecha, y luego se fusionará los cambios en su propio repositorio de código y, posiblemente, su copia de trabajo.fuente
git pull == (git fetch + git merge)
git fetch no cambia a las sucursales locales.
Si ya tiene un repositorio local con una configuración remota para el proyecto deseado, puede tomar todas las ramas y etiquetas para el control remoto existente usando git fetch. ... Fetch no realiza ningún cambio en las ramas locales, por lo que deberá fusionar una rama remota con una rama local emparejada para incorporar los cambios de recuperación nuevos. de github
fuente
Tratando de ser claro y simple.
El comando git pull es en realidad un
shortcut
for git fetch seguido por el comando git merge o el comando git rebase según su configuración. Puede configurar su repositorio Git para que git pull sea una búsqueda seguida de una nueva versión.fuente
Una representación gráfica simple para principiantes,
aquí,
buscará el código del repositorio y lo volverá a crear con su local ... en git pull existe la posibilidad de que se creen nuevas confirmaciones.
pero en ,
git fetch
buscará el código del repositorio y necesitamos volver a crearlo manualmente usando
git rebase
por ejemplo: voy a buscar del servidor maestro y volverlo a crear en mi maestro local.
1) git pull (el rebase se realizará automáticamente):
aquí el origen es tu maestro de repositorio remoto es tu sucursal
2) git fetch (necesita rebase de forma manual):
buscará los cambios del servidor desde el origen. y estará en tu local hasta que lo rebastes por tu cuenta. Necesitamos solucionar los conflictos manualmente al verificar los códigos.
esto cambiará el código a local. antes de eso, asegúrese de estar en la rama correcta.
fuente
En realidad, Git mantiene una copia de su propio código y el repositorio remoto.
El comando
git fetch
actualiza su copia local al obtener datos del repositorio remoto. La razón por la que necesitamos esto es porque alguien más podría haber realizado algunos cambios en el código y usted desea mantenerse actualizado.El comando
git pull
trae los cambios en el repositorio remoto a donde guarda su propio código. Normalmente,git pull
hace esto haciendo una 'búsqueda de git' primero para actualizar la copia local del repositorio remoto, y luego combina los cambios en su propio repositorio de código y posiblemente su copia de trabajo.fuente