Resposta curta
Se você realmente gosta de ser explícito e usar a -uopção quando necessário, mas simplesmente não deseja digitar o todo:
git push -u origin foo
Então você pode usar o seguinte alias:
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
E simplesmente digite:
git push-u
Resposta longa
Normalmente, a necessidade de -u(abreviação de --set-upstream) é quando acabamos de criar um novo branch local e commitar, e queremos colocá-lo no upstream. O repositório remoto ainda não tem o novo branch, então precisamos dizer ao git para criar e rastrear o branch remoto antes de enviar o commit. Isso é necessário apenas para o primeiro push no branch. Aqui está um cenário 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
Pessoalmente, gosto da necessidade de ser explícito com git push -u ao criar o branch remoto: é uma operação bastante significativa, compartilhar um novo branch para o mundo.
No entanto, odeio que tenhamos que escrever explicitamente git push -u origin foo. Não só é difícil digitar, mas mais importante, é bastante sujeito a erros! É fácil cometer um erro ao digitar o nome do branch, e o novo branch remoto não terá o mesmo nome do seu branch local! Na maioria dos casos, realmente, você deseja que o repositório upstream sejaorigin , e o branch upstream tenha o mesmo nome do seu branch local.
Portanto, estou usando o seguinte alias no meu .gitconfig, que é um subconjunto da excelente resposta fornecida por Mark :
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Agora, podemos fazer o seguinte, que ainda é explícito, mas menos sujeito a erros:
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.defaultebranch.<name>.mergeem git-config (1) ?