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 *