Existem várias maneiras de configurar o upstream, pressionando ou sem pressionar ao mesmo tempo.
Se magit-push-current-set-remote-if-missing
não for nil
(o padrão), você verá algo como:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
Para enviar origin/feature
e definir isso como upstream, pressione ue, em seguida, RETaceite o candidato a conclusão padrão.
Se magit-push-current-set-remote-if-missing
for nil
, você verá isso:
Push feature to
e elsewhere
Se você pressionou pagora, seria informado que o upstream não está configurado (o que implica que você não pode avançar para o upstream se não houver upstream).
Mas, se magit-push-current-set-remote-if-missing
estiver nil
, a lista de opções será exibida --set-upstream
, para que você possa usar P - u pcomo está acostumado (exceto que o segundo p é minúsculo). Porém, há uma complicação: depois de alterar o valor, magit-push-current-set-remote-if-missing
você deve reiniciar o Emacs para --set-upstream
aparecer ou desaparecer.
Finalmente, você pode definir o montante usando o "upstream conjunto (e fazer mais nada)" comando: b uorigin/master
RET. Observe que, quando você usa essa abordagem, é possível selecionar apenas uma ramificação que já existe.
Mas seria melhor configurar o push-remote e empurrar para isso. Para saber mais sobre o push-remote e como ele difere do upstream, consulte o nó Ramificação no manual de informações (a versão da Web ainda não foi atualizada).
Basicamente, a ramificação upstream é a ramificação na qual sua ramificação de recursos será eventualmente mesclada (mesclando ou reestruturando, não pressionando), provavelmente origin/master
. E o push-remote é para onde você envia as ramificações dos recursos enquanto ainda trabalha nelas ou para que outras pessoas possam mesclá-las. Se a ramificação local for nomeada feature
e o push-remote for my-fork
, pressione essa ramificação usando P ppush para my-fork/feature
. (O "push-to-branch" não pode ser configurado, o nome da ramificação no push-remote é sempre o mesmo que o nome local.)
Portanto, enquanto sua pergunta era algo como "como eu empurro para o upstream, enquanto configuro o upstream ao mesmo tempo", minha recomendação é não empurra para o upstream, mas empurra para o push-remote.
Desde que você não tenha alterado o valor, magit-push-current-set-remote-if-missing
você pode configurar o push-remote usando P psome-remote
RET. Porém, como você provavelmente envia todas as ramificações de recurso para o mesmo controle remoto, é melhor definir uma vez para todas as ramificações e concluir com ele: be M-paté que o controle remoto correto seja selecionado.
Observe também que geralmente não deve ser necessário definir explicitamente a ramificação upstream. Quando você cria uma nova ramificação e seleciona uma ramificação remota como ponto de partida, isso é usado como upstream.
Infelizmente, o ponto de partida geralmente é uma ramificação local e, nesse caso, o Git, por padrão, não o usa como o upstream. Mas isso pode ser facilmente corrigido executando-o uma vez:
git config --global branch.autoSetupMerge always
O valor padrão é true
, o que significa "definir o ponto de partida como upstream, desde que seja uma ramificação remota ".
A propósito, o mesmo se aplica ao controle remoto. Isso também deve ser definido semi-automaticamente em "novos" repositórios. Se você clonar um repositório, você será perguntado se deseja usar origin
como push-remote. Você deve responder "sim", a menos que queira adicionar outro controle remoto, por exemplo my-fork
, que deve ser usado como controle remoto. Quando você adiciona um novo controle remoto M ae remote.pushDefault
ainda não está definido, será perguntado se deseja usar o controle remoto recém-adicionado como o controle remoto.
Isso pode ser configurado usando magit-clone-set-remote.pushDefault
e magit-remote-add-set-remote.pushDefault
.
Outra opção avançada é a magit-branch-prefer-remote-upstream
padrão nil
. Se você configurá-lo como t
e selecionar uma ramificação local como ponto de partida para uma nova ramificação, o upstream do ponto de partida pode (de acordo com algumas regras, consulte doc-string) ser usado como upstream, em vez de o próprio ponto de partida.
<remote>/<branch>
peça foi acidentalmente deixada de fora do prompt (consulte este comentário ). Enquanto isso, você pode definirmagit-push-current-set-remote-if-missing
para zero.