¿Es posible crear una sucursal que rastrea un control remoto no existente?

Me gustaría verificar una sucursal de tal manera que el siguiente git push lo empuje correctamente al origen bajo el mismo nombre.

Esto es fácil cuando ya existe una twig remota

 git checkout -b branch origin/branch 

Sin embargo, me gustaría hacer eso incluso si el origin/branch aún no está allí.

Solo crea una sucursal local

 git checkout -b branch 

El repository remoto no sabe nada sobre su sucursal local, por lo que debe presionarlo por primera vez "a mano"

 git push origin branch 

Ahora, si quiere que su repository local le permita rastrear su sucursal local con la remota

 git branch --set-upstream branch origin/branch 

No hay una manera fácil, AFAIK.

Esta es mi puñalada actual. Esta es una function bash que configura una nueva twig local de tal manera que git push de esa twig empuja a una nueva twig remota con el mismo nombre.

 function featurebranch() { if [ "$@" != "" ]; then git branch "$@" origin/master git checkout "$@" git config branch."$@".remote origin git config branch."$@".merge refs/heads/"$@" git config branch."$@".rebase true fi } 

Tiene que usar git config , porque usar git push -u o git branch --track o git branch --set-upstream-to todos los commands implican una twig remota que realmente existe.

Agradecería que cualquier git gurús lo revisara y señalara cualquier problema. Ejército de reserva. 😉

Tratado y probado . git versión 2.10.1 (Apple Git-78)

 1) git checkout -b localBranchNameThatDoesNotExistInRemote 2) Do your changes , and go a git commit 3) git push origin localBranchNameThatDoesNotExistInRemote --force 

NB: el brunch en el que se encuentra actualmente en local y la twig remota no existente en la que está intentando enviar contenido, debe tener el mismo nombre .

Git 1.7.0+

El primero, para crear una sucursal local:

 git checkout -b new-branch 

En este punto, el repository remoto no conoce la twig local, por lo que debemos presionar y establecer la reference de seguimiento.

 git push -u origin new-branch 

Git <1.7.0

Crea una sucursal local:

 git checkout -b new-branch 

Git antes de la versión 1.7.0 necesita tres commands para empujar la twig y establecer la reference de seguimiento.

 git push origin new-branch git config branch.new-branch.remote origin git config branch.new-branch.merge refs/heads/new-branch 

Con Alias ​​(Git 1.7.0+)

Bonificación: cree una sucursal local y presione una twig remota rastreada en un command con este git alias:

 git config --global alias.cb $'!sh -c \'git checkout -b "$0" && git push -u origin "$0"\'' 

Luego, para crear una nueva twig, solo puede ejecutar:

 git cb new-branch