Saltar al contenido

¿Qué hace exactamente la “u”? “git push -u origin master” frente a “git push origin master”

Solución:

La clave es “git-pull sin argumentos”. Cuando haces un git pull desde una rama, sin especificar una fuente remota o rama, git mira el branch.<name>.merge ajuste para saber de dónde sacar. git push -u establece esta información para la rama que está enviando.

Para ver la diferencia, usemos una nueva rama vacía:

$ git checkout -b test

Primero, empujamos sin -u:

$ git push origin test
$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.test.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "test"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

Ahora si agregamos -u:

$ git push -u origin test
Branch test set up to track remote branch test from origin.
Everything up-to-date
$ git pull
Already up-to-date.

Tenga en cuenta que la información de seguimiento se ha configurado para que git pull funciona como se esperaba sin especificar el control remoto o la rama.

Actualizar: Consejos adicionales:

  • Como Mark menciona en un comentario, además de git pull Esta configuración también afecta el comportamiento predeterminado de git push. Si adquiere el hábito de usar -u para capturar la rama remota que desea rastrear, recomiendo configurar su push.default valor de configuración para upstream.
  • git push -u <remote> HEAD empujará la rama actual a una rama del mismo nombre en <remote> (y también configurar el seguimiento para que pueda hacer git push después).

git push -u origin master

… es lo mismo que:

git push origin master ; git branch --set-upstream master origin/master

Haz la última declaración, si olvidas la -u!

O podrías forzarlo:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Si dejas que el comando lo haga por ti, detectará tus errores, como si escribiste una rama inexistente o no lo hiciste. git remote add; aunque eso podría ser lo que quieres. 🙂

En términos más simples:

Técnicamente, el -u flag agrega una referencia de seguimiento al servidor ascendente al que está presionando.

Lo importante aquí es que esto le permite hacer una git pull sin aportar más argumentos. Por ejemplo, una vez que haces un git push -u origin master, puedes llamar más tarde git pull y git sabrá que realmente quisiste decir git pull origin master.

De lo contrario, tendría que escribir el comando completo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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