tutorial gui español descargar commands comandos git

gui - git repository



¿Qué hace exactamente la "u"? "Git push-u origin master" vs "git push master de origen" (4)

En términos más simples:

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

Lo que es importante aquí es que esto te permite hacer un git pull sin proporcionar más argumentos. Por ejemplo, una vez que hagas un git push -u origin master , más tarde podrás llamar a git pull y git sabrá que realmente te refieres a git pull origin master .

De lo contrario, tendrías que escribir todo el comando.

Aparentemente soy terrible al usar git, a pesar de mis mejores intentos de entenderlo.

De kernel.org para git push :

-u

--estado arriba

Para cada rama que esté actualizada o que se haya enviado con éxito, agregue la referencia en sentido ascendente (seguimiento), utilizada por git-pull (1) sin argumentos y otros comandos. Para obtener más información, consulte la branch.<name>.merge en git-config (1).

Aquí está la branch.<name>.merge desde git config :

branch.<name>.merge

Define, junto con la branch.<name>.remote , la rama en sentido ascendente para la rama dada. Le dice a git fetch / git pull qué rama fusionar y también puede afectar a git push (ver push.default). Cuando se encuentra en la rama <name> , le dice a git que busque la refspec predeterminada que se marcará para fusionarse en FETCH_HEAD. El valor se maneja como la parte remota de un refspec, y debe coincidir con una referencia que se obtiene del remoto dado por "branch.<name>.remote" . La información de combinación es utilizada por git pull (que al principio llama a git fetch) para buscar la rama predeterminada para la fusión. Sin esta opción, los valores por defecto de git pull para fusionar el primer refspec obtenido. Especifique múltiples valores para obtener una fusión de pulpo. Si desea configurar git pull para que se fusione con <name> desde otra rama en el repositorio local, puede apuntar a branch.<name>.merge a la rama deseada, y usar la configuración especial. (un punto) para la branch.<name>.remote .

Configuré exitosamente un repositorio remoto con github, y presioné exitosamente mi primer compromiso con:

git push -u origin master

Luego, sin saberlo, empujé mi segundo compromiso a mi repositorio remoto usando:

git commit -m ''[...]''

Sin embargo, pensando incorrectamente que tendría que volver a origin desde el master , corrí:

# note: no -u git push origin master

¿Qué hizo eso? No parecía tener ningún efecto en absoluto. ¿He "deshecho" git push -u origin master ?


La clave es "argument-less git-pull". Cuando realiza una git pull desde una rama, sin especificar una fuente remota o una rama, git mira la configuración de la branch.<name>.merge para saber de dónde extraer. git push -u establece esta información para la rama que estás presionando.

Para ver la diferencia, vamos a usar 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 funcione como se espera sin especificar el control remoto o la sucursal.

Actualización: consejos de bonificación:

  • 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 intenta rastrear, le recomiendo que configure el valor de configuración push.default el push.default 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 de eso).

Todos los comandos git bash necesarios para empujar y jalar a Github:

git status git pull git add filefullpath git commit -m "comments for checkin file" git push origin branch/master git remote -v git log -2

Si quieres editar un archivo entonces:

edit filename.*

Para ver todas las ramas y sus compromisos:

git show-branch


git push -u origin master

Es lo mismo que:

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

Haga la última afirmación si olvida el -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, elegirá tus errores, como si escribiste una rama inexistente o no git remote add , aunque eso podría ser lo que quieres :).