Ao fazer o check-out de uma nova ramificação ( git checkout -b $BRANCH
), muitas vezes, quero enviá-la para um remoto específico usando o mesmo nome de ramificação. Eu tenho dois controles remotos, um chamado "origem" e um chamado "meu". Quando eu quero empurrar um novo ramo para "meu", eu posso simplesmente fazer
$ git push -u mine
Isso vai empurrar a filial para refs/heads/$BRANCH
no controle remoto "meu" e começar a rastreá-lo.
No entanto, a mesma coisa não funciona para o controle remoto "origin":
$ git push -u origin
fatal: The current branch $BRANCH has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin $BRANCH
(Usar git push -u origin $BRANCH
, como a saída sugere, é claro, funciona bem, mas prefiro não repetir o nome da ramificação, pois posso digitar isso incorretamente.)
Por que um controle remoto é tratado de maneira diferente do outro?
Fragmento relevante do meu arquivo de configuração:
[remote "origin"]
url = ssh://git@server:/path/to/public/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull-requests/*/from:refs/remotes/origin/pr/*
[remote "mine"]
url = ssh://git@server:/path/to/my/repo.git
fetch = +refs/heads/*:refs/remotes/mine/*
fetch = +refs/pull-requests/*/from:refs/remotes/mine/pr/*
Como você pode ver, essas configurações são as mesmas (mutatis mutandis), mas produzem um comportamento tão diferente. O nome "origem" é de alguma forma especial ou há outra configuração que eu precise olhar?
Estou usando a versão 2.7.0 do git.