git pull -u sem nome de referência funciona apenas com remotos que não sejam origem

1

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.

    
por Raphael Schweikert 04.04.2016 / 17:01

1 resposta

0

Filiais de rastreamento têm uma filial remota e remota associadas - observe a ramificação em .git / config ( branch.*.remote e branch.*.merge ). No caso de sua filial, o controle remoto é "meu".

Dê uma olhada em push.default em git-config(1) - o comportamento padrão ( simple ) é empurre a ramificação atual para a ramificação remota e o controle remoto da ramificação somente quando ambas as ramificações tiverem o mesmo nome.

    
por 06.04.2016 / 12:02

Tags