Um alias bash para usuários git intermediários: gityank

Como um usuário git, de vez em quando você executa um git pulle é surpreendido pelo seguinte erro:

git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull
<remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch
--set-upstream-to=<remote>/<branch> mybranch

Então, naturalmente, você geme.
Em seguida, copie / cole partes desse comando enorme e talvez use o preenchimento automático do shell com algo como zsh.

E se eu dissesse que existe uma maneira melhor?

Um tempo atrás, eu tinha que executar este encantamento várias vezes ao dia enquanto migrava alguns repositórios git para diferentes remotos. Após 2 dias dessa loucura, tive que criar uma função bash – e isso salvou minha sanidade centenas de vezes desde então!

Sem mais adeus, apresento gityank; quando você não pode puxar, puxe !

gityank() {
if [ "$#" -eq 0 ]; then
1="$(gb)"
elif [ "$#" -eq 1 ]; then
git branch
--set-upstream-to="origin/$1" $1
else
git branch
--set-upstream-to="$1/$2" $2
fi
}

A função em si é bastante simples. A chave é git rev-parse --abbrev-ref HEAD, que determina o ramo atual.
No meu perfil do bash, na verdade tenho o alias de gb.

Leitura Adicional