Git: diferencia entre ‘git fetch’ y ‘git pull’

    Como programador principiante, o incluso para muchos programadores experimentados, el control de versiones de Git puede ser dif铆cil de aprender y dominar. Gran parte de la raz贸n, en mi opini贸n, se debe a los muchos comandos diferentes que existen y las peque帽as diferencias entre ellos.

    Un ejemplo de ello es la diferencia entre git fetch y git pull. A primera vista, el nombre de los comandos no da mucha pista sobre en qu茅 se diferencian, por lo que en este art铆culo explicar茅 la diferencia entre git fetch y git pull comandos.

    Git Fetch

    los fetch El comando recupera las confirmaciones, referencias (como etiquetas), ramas y archivos de un repositorio remoto, junto con cualquier otro objeto correspondiente. Sin embargo, no se recuperan todas las etiquetas ya que este comando solo toma las que apuntan a confirmaciones que est谩 recuperando. B谩sicamente, este comando obtiene todo lo necesario para reconstruir el historial de la rama en particular que le interesa.

    La sintaxis b谩sica es la siguiente:

    $ git fetch <remote-repo> <remote-branch>
    

    Especificando <remote-branch> solo obtendr谩 los cambios de esa rama. Si se omite este par谩metro, se recuperan los cambios de todas las ramas.

    Lo interesante del fetch comando es que en realidad no afecta nada en su repositorio local. No se perder谩n los cambios de trabajo y no ver谩 ning煤n efecto directo en sus sucursales locales. Esto se debe a que Git mantiene el contenido obtenido por separado del contenido de su propio repositorio hasta que se fusiona.

    Entonces, digamos que desea ver los cambios para la rama “maestra” desde el repositorio remoto “origen” antes de decidir combinarlos en su repositorio. Para hacer esto, puede usar los siguientes comandos:

    $ git fetch origin master
    

    Ahora que tiene los cambios en su repositorio, es probable que desee verlos realmente, lo que puede hacer simplemente revisando la rama:

    $ git checkout origin/master
    

    Esto le permitir谩 ver los cambios y a煤n no se fusionar谩 con ninguna de sus propias ramas.

    Una forma m谩s r谩pida de ver estos cambios ser铆a simplemente mirar los registros de confirmaci贸n, lo que puede hacer con:

    $ git log master..origin/master
    

    Tenga en cuenta que esto se considera un m茅todo “m谩s seguro” que pull ya que en realidad no realiza ning煤n cambio en sus sucursales locales.

    Ahora que hemos visto lo que fetch hace y un poco sobre c贸mo funciona, echemos un vistazo a pull.

    Git Pull

    los git pull comando es lo que yo llamar铆a un comando de “alto nivel”. Con eso quiero decir que realiza las acciones de algunos otros comandos de Git en secuencia, que explicar茅 m谩s adelante. En esta secci贸n, despu茅s de describir la diferencia entre fetch y pull, Tambi茅n hablar茅 brevemente sobre las numerosas formas diferentes en que se puede usar el comando.

    La sintaxis general es la siguiente:

    $ git pull <remote-repo> <remote-branch>
    

    Ambos <remote-repo> y <remote-branch> Los par谩metros son opcionales, siempre que su sucursal actual est茅 rastreando una remota.

    Probablemente la forma m谩s sencilla de explicar este comando y en qu茅 se diferencia de fetch, es que es un alias para otros dos comandos de Git, cuando se usa en su modo predeterminado: fetch y merge. Entonces corriendo git pull esencialmente est谩 ejecutando estos dos comandos en secuencia:

    $ git fetch <remote-repo>
    $ git merge FETCH_HEAD
    

    aqu铆 FETCH_HEAD es una referencia a la sugerencia de la 煤ltima b煤squeda, que se est谩 fusionando con su rama actual.

    Entonces, obviamente, la gran diferencia entre fetch y pull es eso pull Realmente realiza un fetch adem谩s de un merge.

    Aunque dependiendo de la opci贸n que le des a git pull, puede funcionar de manera diferente a esto. Por ejemplo, si agrega el --rebase opci贸n, entonces usar谩 git rebase en vez de git merge.

    Tambi茅n est谩 el --no-commit opci贸n, que realizar谩 la merge comando, pero (como se indica en la documentaci贸n oficial) “fingir谩 que la fusi贸n fall贸” y no lo confirmar谩 autom谩ticamente. Esto le permite echar un vistazo a los cambios que acaba de obtener antes de comprometerlos con su c贸digo.

    Hay bastantes opciones m谩s disponibles, la mayor铆a de las cuales est谩n fuera del alcance de este art铆culo. Recomiendo echar un vistazo a documentaci贸n oficial para m谩s informaci贸n.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *