Como impedir que o Magit pergunte para onde empurrar um galho?
10
Ao ligar magit-push-currentcom a P Ppartir do buffer de status, Magit 2.1.0pergunta-me onde enviar a ramificação pela primeira vez, quando o upstream não está definido.
Como ele pode gerar automaticamente o nome como costumava fazer antes?
Caso você não saiba, o nome gerado automaticamente é uma das opções de conclusão. Portanto, na primeira vez em que você enviar some-branch-namepara o origincontrole remoto, provavelmente poderá digitar o TAB s TABe obter o nome desejado.
Malabarba 07/07/2015
Oh ok, eu não sabia, obrigado. O problema é que tenho muitas ramificações começando com os mesmos prefixos, o que não é muito útil, também sempre coloco ramificações remotas com o mesmo nome que as ramificações locais.
Z1naOK9nu8iY5A
Respostas:
8
Atualização: o "push branch" mencionado abaixo foi implementado agora. Consulte a documentação sobre ramificação para obter mais informações.
Você precisa definir o ramo upstream uma vez. Depois de ter feito isso P Pempurra para que e você vai obter listas de mudanças unpulled e unpushed no buffer de status (desde que haja alguma).
Existem várias maneiras de definir o ramo upstream. Você pode usar o --set-upstreaminterruptor do pop-up push: P -u P. Ou usar o comando que define o montante e não faz nada mais: b u.
Agora, o Magit agora define automaticamente o ramo upstream ao criar um novo ramo, desde que o "ponto de partida" seja um nome de ramo. Isso funciona para "upstreams" locais e remotos. Mas observe que, se você escolher uma filial local como ponto de partida, isso não ajudará você a pressionar. Transferir do repositório atual para o repositório atual obviamente não faz sentido e não é permitido.
Portanto, quando o ramo "upstream" é de fato outro ramo local, P Pcomporta - se como se nenhum ramo upstream estivesse configurado e se comporta exatamente como P e. O mesmo acontece se nenhum upstream estiver configurado.
Isso devido a uma limitação no Git: só é possível associar um outro ramo a algum ramo, e esse ramo é chamado de "ramo upstream". Seria melhor se houvesse pelo menos uma ramificação "upstream" e "publicação". Pretendo implementar isso no Magit eventualmente. Veja a edição # 1485 .
Portanto, se você deseja poder fazer o push com P Pisso, o ramo "upstream" deve ser, por exemplo, "origem / mestre", não "mestre".
Estou pensando em adicionar uma variante push que sempre é executada git pushsem argumentos. O que isso faz dependeria exclusivamente da configuração do Git.
Eu ramifiquei mastere ele não configurou a montante, talvez eu deva ramificar origin/masterpara que o montante seja definido automaticamente?
Z1naOK9nu8iY5A
Veja a resposta atualizada.
tarsius 7/07/2015
11
Ramificação do origin/masterconjunto origin/mastercomo a montante, mas eu esperava ter a origin/branch-namemontante.
Z1naOK9nu8iY5A
Se é isso que você quer, é melhor fazê-lo durante o push. P -p P <... completion ...> RETObserve que ele origin/branch-nameé oferecido como candidato a conclusão, para que você não precise digitá-lo.
tarsius 7/07/2015
2
Isso é doloroso quando você está usando o gitflow e solicita pull para revisão de código, com uma ramificação por recurso, porque normalmente você apenas envia uma vez e é sempre criar uma ramificação remota com o mesmo nome que a ramificação local. Enviar para uma ramificação nomeada diferente seria uma execução final em torno da revisão de código.
Barry Kelly
3
Eu uso o seguinte conselho que é ativado automaticamente --set-upstreamquando o ramo atual ainda não possui um montante:
(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)"Enable --set-upstream switch if there isn't a current upstream."(let((magit-push-arguments
(if(magit-get-remote) magit-push-arguments
(cons"--set-upstream" magit-push-arguments))))(apply magit-push-popup-fun args)))(advice-add 'magit-push-popup:around #'magit-push-arguments-maybe-upstream)
Combinado com a conclusão do ido, isso permite enviar uma nova ramificação com P P RET:
Eu apenas crio o novo ramo com b ce edito o .git/configarquivo para apontar para, em origin/branchvez de procurar todo o material do magit 2, que parece não funcionar de qualquer maneira.
Isso funciona, enquanto eu ainda não encontrei uma combinação de teclas no magit2 que realiza a mesma coisa. Tentar configurar o controle remoto não funciona porque ainda não existe na origem.
O upstream pode ser configurado usando bu. Mas isso usa git branch --set-upstream-toe, como você sabe, o Git não pode definir um ramo inexistente como o upstream e, portanto, o Magit também não.
tarsius 31/08/2015
@ tarso magit 1 parecia fazer o que eu precisava. Só estou tentando recuperar alguma aparência desse fluxo de trabalho.
some-branch-name
para oorigin
controle remoto, provavelmente poderá digitaro TAB s TAB
e obter o nome desejado.Respostas:
Atualização: o "push branch" mencionado abaixo foi implementado agora. Consulte a documentação sobre ramificação para obter mais informações.
Você precisa definir o ramo upstream uma vez. Depois de ter feito isso P Pempurra para que e você vai obter listas de mudanças unpulled e unpushed no buffer de status (desde que haja alguma).
Existem várias maneiras de definir o ramo upstream. Você pode usar o
--set-upstream
interruptor do pop-up push: P -u P. Ou usar o comando que define o montante e não faz nada mais: b u.Agora, o Magit agora define automaticamente o ramo upstream ao criar um novo ramo, desde que o "ponto de partida" seja um nome de ramo. Isso funciona para "upstreams" locais e remotos. Mas observe que, se você escolher uma filial local como ponto de partida, isso não ajudará você a pressionar. Transferir do repositório atual para o repositório atual obviamente não faz sentido e não é permitido.
Portanto, quando o ramo "upstream" é de fato outro ramo local, P Pcomporta - se como se nenhum ramo upstream estivesse configurado e se comporta exatamente como P e. O mesmo acontece se nenhum upstream estiver configurado.
Isso devido a uma limitação no Git: só é possível associar um outro ramo a algum ramo, e esse ramo é chamado de "ramo upstream". Seria melhor se houvesse pelo menos uma ramificação "upstream" e "publicação". Pretendo implementar isso no Magit eventualmente. Veja a edição # 1485 .
Portanto, se você deseja poder fazer o push com P Pisso, o ramo "upstream" deve ser, por exemplo, "origem / mestre", não "mestre".
Estou pensando em adicionar uma variante push que sempre é executada
git push
sem argumentos. O que isso faz dependeria exclusivamente da configuração do Git.fonte
master
e ele não configurou a montante, talvez eu deva ramificarorigin/master
para que o montante seja definido automaticamente?origin/master
conjuntoorigin/master
como a montante, mas eu esperava ter aorigin/branch-name
montante.P -p P <... completion ...> RET
Observe que eleorigin/branch-name
é oferecido como candidato a conclusão, para que você não precise digitá-lo.Eu uso o seguinte conselho que é ativado automaticamente
--set-upstream
quando o ramo atual ainda não possui um montante:Combinado com a conclusão do ido, isso permite enviar uma nova ramificação com P P RET:
fonte
Eu apenas crio o novo ramo com
b c
e edito o.git/config
arquivo para apontar para, emorigin/branch
vez de procurar todo o material do magit 2, que parece não funcionar de qualquer maneira.Mudança:
Para
Isso funciona, enquanto eu ainda não encontrei uma combinação de teclas no magit2 que realiza a mesma coisa. Tentar configurar o controle remoto não funciona porque ainda não existe na origem.
fonte
bu
. Mas isso usagit branch --set-upstream-to
e, como você sabe, o Git não pode definir um ramo inexistente como o upstream e, portanto, o Magit também não.