Como um usuário git, de vez em quando você executa um git pull
e é 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
.