Respuesta corta
Si realmente desea ser explícito y usar la -u
opción cuando sea necesario, pero simplemente no quiere escribir todo:
git push -u origin foo
Entonces puedes usar el siguiente alias:
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Y simplemente escriba:
git push-u
Respuesta larga
Por lo general, la necesidad de -u
(abreviatura de --set-upstream
) es cuando acabamos de crear una nueva rama local y comprometernos, y queremos impulsarla hacia arriba. El repositorio remoto aún no tiene la nueva rama, por lo que necesitamos decirle a git que cree y rastree la rama remota antes de presionar la confirmación. Esto solo es necesario para el primer empujón en la rama. Este es un escenario típico:
git checkout -b foo # Create local branch
git commit -m "Foo" # Create local commit
git push -u origin foo # Create and track remote branch, and push commit
git commit -m "Bar" # Create local commit
git push # Push commit
Personalmente, me gusta la necesidad de ser explícito git push -u
al crear la rama remota: es una operación bastante significativa, compartir una rama completamente nueva con el mundo.
Sin embargo, odio que tengamos que escribir explícitamente git push -u origin foo
. No solo es complicado escribir, sino que, lo que es más importante, ¡es bastante propenso a errores! Es fácil cometer un error al escribir el nombre de la rama, ¡y la nueva rama remota no tendrá el mismo nombre que la rama local! En la mayoría de los casos, realmente, desea que el repositorio ascendente sea origin
y la rama ascendente tenga el mismo nombre que su rama local.
Por lo tanto, estoy usando el siguiente alias en my .gitconfig
, que es un subconjunto de la excelente respuesta proporcionada por Mark :
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Ahora, podemos hacer lo siguiente, que sigue siendo explícito, pero menos propenso a errores:
git checkout -b foo # Create local branch
git commit -m "Foo" # Create local commit
git push-u # Create and track remote branch, and push commit
git commit -m "Bar" # Create local commit
git push # Push commit
push.default
ybranch.<name>.merge
en git-config (1) ?push.default
fijado encurrent
- así es como puedo decirgit push origin
sin refspec o upstream. Pero no ayuda a configurar automáticamente el upstream.