¿Cómo empujar una twig de nombre desconocido a su control remoto cada vez?

Por lo general, cuando presiono, uso git push origin master que generalmente leo en mi cabeza como, presiono TO el origen remoto FROM mi master local. Estoy haciendo un guión en este momento que necesita ser utilizado por muchas personas. Digamos que tenemos una twig remota llamada Versión 1.0. Quiero que mi script automáticamente envíe la twig de usuarios a su control remoto, sin importar el nombre de la sucursal. Entonces digamos que tenemos una twig llamada experimentalBranch que se basa en la Versión 1.0. ¿Cómo puedo presionar siempre una twig para que sea remota, sin importar el nombre? Con mi manera normal, no funcionaría, ya que especifico el nombre maestro de la twig local.

Debo agregar que tampoco sé el nombre del control remoto. Básicamente, quiero decir "empuje mi twig local a su control remoto, sea lo que sea local y remoto".

Esto empuja a un control remoto dado con el nombre de la twig correcta, sea lo que sea:

 git push origin HEAD 

Lamentablemente, todavía necesita saber el nombre remoto para esto.

Si quieres algo que funcione incluso sin conocer el nombre remoto, es un poco más complicado. La mejor manera que pude encontrar fue este command, que imprime el nombre de la twig de seguimiento remoto, incluido el nombre del control remoto:

 git rev-parse --abbrev-ref --symbolic-full-name @{u} 

Esto produce en formatting remotename/branchname . A partir de esto, puede extraer el nombre remoto usando bash, por ejemplo:

 refname=$(git rev-parse --abbrev-ref --symbolic-full-name @{u}) IFS=/ read -a arr <<< "$refname" remote=${arr[0]} branch=${arr[1]} 

Y luego puedes presionar así:

 git push $remote $branch # actually this should do as well: # git push $remote HEAD 

El script que quieres:

 current_branch=$(git rev-parse --abbrev-ref HEAD) git push origin $current_branch 

Puede escribir esas líneas en la terminal, o ponerlas en un file y ejecutar ese file como una secuencia de commands.

Si quieres algo bueno como git push origin self en la terminal, ponlo en ~ / .bashrc:

 git() { if [ "$1" == "push" ] && [ "$2" == origin ] && [ "$3" == "self" ]; then current_branch=$(git rev-parse --abbrev-ref HEAD) git push origin $current_branch else command git "$@" fi } 

Probablemente quieras esto:

 git config --global push.default current 

Después de que haya configurado esto, y lo hace:

 git push foobar 

Básicamente se traducirá a:

 git push foobar HEAD