git fetch - ¿Cuál es la diferencia entre 'git pull' y 'git fetch'?

git merge / git / version-control / git-pull / git-fetch

¿Cuáles son las diferencias entre git pull y git fetch ?

Jonathan Leffler



Answer #1

Me gusta tener alguna representación visual de la situación para captar estas cosas.Quizás a otros desarrolladores les gustaría verlo también,así que aquí está mi aportación.No estoy totalmente seguro de que todo sea correcto,así que por favor comenten si encuentran algún error.

                                         LOCAL SYSTEM
                  . =====================================================    
================= . =================  ===================  =============
REMOTE REPOSITORY . REMOTE REPOSITORY  LOCAL REPOSITORY     WORKING COPY
(ORIGIN)          . (CACHED)           
for example,      . mirror of the      
a github repo.    . remote repo
Can also be       .
multiple repo's   .
                  .
                  .
FETCH  *------------------>*
Your local cache of the remote is updated with the origin (or multiple
external sources, that is git's distributed nature)
                  .
PULL   *-------------------------------------------------------->*
changes are merged directly into your local copy. when conflicts occur, 
you are asked for decisions.
                  .
COMMIT            .                             *<---------------*
When coming from, for example, subversion, you might think that a commit
will update the origin. In git, a commit is only done to your local repo.
                  .
PUSH   *<---------------------------------------*
Synchronizes your changes back into the origin.