password - git remote
Push.default "simple" versus "actual" en git para flujo de trabajo descentralizado (2)
La diferencia es que con simple
, git push
(sin pasar un refspec) fallará si la rama actual no está rastreando una rama ascendente remota (incluso si existe una rama con el mismo nombre en el control remoto):
$ git checkout -b foo
Switched to a new branch ''foo''
$ git config push.default simple
$ git push
fatal: The current branch foo has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin foo
Por otro lado, a la current
no le importa si la rama actual rastrea una corriente ascendente o no, solo quiere enviarla a cualquier rama que tenga el mismo nombre:
$ git config push.default current
$ git push
Total 0 (delta 0), reused 0 (delta 0)
To /Documents/GitHub/bare
* [new branch] foo-> foo
La documentación
De la documentación de configuración de Git :
upstream
: empujar la rama actual a su rama ascendente ...
simple
, como en sentido ascendente, pero se niega a presionar si el nombre de la rama ascendente es diferente del local ...
current
: empuje la rama actual a una rama del mismo nombre.
Desde un punto de vista funcional, en un flujo de trabajo descentralizado, no veo la diferencia entre current
opciones simple
y las current
para la push.default
config push.default
.
current
empujará la rama actual a una rama con nombre idéntico en el control remoto especificado. simple
hará efectivamente lo mismo tanto para los controles remotos como para los controles remotos sin seguimiento para la bifurcación actual (impone nombres de bifurcaciones idénticos en ambos casos).
¿Alguien puede explicar alguna diferencia importante entre los dos para los flujos de trabajo descentralizados que me falta?
La diferencia es que empuja simple
a su rama de seguimiento si tiene el mismo nombre, mientras que la current
empujará a una rama del mismo nombre independientemente de cualquier rama de seguimiento:
$ git branch -vvv
master 58d9fdc [origin/master: ahead 1] t1 bobo
* new 37132d3 [origin/save: ahead 1] t1 bibi # <- tracking branch ''save''
$ git -c push.default=current push # <- set `push.default=current`
Counting objects: 3, done.
Writing objects: 100% (3/3), 234 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /home/jthill/sandbox/20/t1
* [new branch] new -> new # <- and push creates `new`