Quando você pressiona um ramo com Magit (with P P
) e o ramo não tem montante, o Magit pergunta o nome do ramo que você deseja enviar. Isso é ótimo.
Depois de configurar o upstream para uma ramificação, no entanto, o Magit não pergunta mais onde você deseja enviá-lo. Isso geralmente é conveniente (você não quer ser solicitado todas as vezes), mas torna difícil enviar uma ramificação para outra ramificação remota.
Existe uma maneira de o Magit me perguntar novamente sobre o ramo de destino, mesmo se o ramo atual já tiver um montante?
Caso de uso
É bastante comum que eu tenha um ramo como este:
Local: issue-30 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
e quero alterar as ramificações local e remota para issue-30-and-34
. Se eu apenas renomear a ramificação local, fico com isso:
Local: issue-30-and-34 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
Mesmo se eu excluir origin/issue-30
, fazendo P P
em issue-30-and-34
simplesmente recriar o origin/issue-30
.
O que acabo fazendo é o seguinte, mas parece algo indireto para algo que pode ser feito em um único git
comando:
- Crie uma nova ramificação chamada
issue-30-and-34
(em vez de renomear a antiga), - excluir as versões local e remota de
issue-30
, - push
issue-30-and-34
(já que ele ainda não tem upstream, o Magit me perguntará para onde empurrar).
Respostas:
Começando com
v2.1
você pode alterar o upstream da ramificação atual para uma ramificação remota ou local usando bu[REMOTE/]BRANCH
RET. Começando comv2.4
, se um upstream já estiver definido, ele buserá desativado. Pressione unovamente para definir um novo valor.Começando com
v2.4
e se o upstream estiver desativado, você também pode configurá-lo enquanto pressiona usando pu[REMOTE/]BRANCH
RET. Você será perguntado automaticamente qual filial usar como upstream. Uma vez que um upstream tenha sido definido, ele puserá pressionado para isso sem permitir que você altere o upstream. Portanto, para mudar a montante, você deve usar a abordagem descrita no parágrafo anterior.Antes
v2.4
, também era possível definir a ramificação remota para a qual você está empurrando como a ramificação upstream p-ueREMOTE/BRANCH
RET. Mas agora a--set-upstream
opção não está mais disponível no pop-up push por padrão . Você pode recuperá-lo definindomagit-push-current-set-remote-if-missing
como nulo. Isso tem dois efeitos: a--set-upstream
opção estará disponível novamente após a próxima reinicialização e a abordagem descrita no parágrafo anterior não funcionará mais.Se você deseja que os dois recursos descritos no segundo e terceiro parágrafos estejam disponíveis ao mesmo tempo, deixe
magit-push-current-set-remote-if-missing
intocados e adicione-o ao arquivo init:fonte
Pressione "
P C-u C-u P
" para fazer o Magit perguntar qual ramificação remota e remota usar antes de pressionar.(Com um único argumento de prefixo ("
P C-u P
"), o Magit pergunta qual controle remoto usar.)Eu descobri isso pressionando
P C-h k P
um buffer de status do Magit, lendo os documentos demagit-push
emagit-push-dwim
(esses documentos parecem estar desatualizados, BTW) e experimentando.PS: Eu uso Magit
magit-1.2.0-2049-ge6839e8
.fonte
Parece que está na seção branch / configure agora:
b
C
p
para definir o pushRemotefonte
A partir de novembro de 2016 e a mais recente
magit
, aqui está uma solução parcial:P
e
- permite empurrarelsewhere
, mas não é lembradoEu não consegui encontrar um caminho para o Magit
--set-upstream
, então eu fiz isso no terminal, meio que uma trapaça, mas isso me superou:git push --set-upstream origin <branch-name>
E agora o novo upstream está salvo, e eu posso construir minha próxima coisa :)
fonte
--set-upstream
" - Talvez você devesse tentar ler a resposta demagit
mudou um pouco desde então, e minha esperança é que a minha solução salva alguém um extra alguns minutos