Ao ligar magit-push-current
com a P P
partir do buffer de status, Magit 2.1.0
pergunta-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?
Ao ligar magit-push-current
com a P P
partir do buffer de status, Magit 2.1.0
pergunta-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?
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.
master
e ele não configurou a montante, talvez eu deva ramificar origin/master
para que o montante seja definido automaticamente?
origin/master
conjunto origin/master
como a montante, mas eu esperava ter a origin/branch-name
montante.
P -p P <... completion ...> RET
Observe que ele origin/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:
(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:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
Eu apenas crio o novo ramo com b c
e edito o .git/config
arquivo para apontar para, em origin/branch
vez de procurar todo o material do magit 2, que parece não funcionar de qualquer maneira.
Mudança:
[branch "fix_something"]
remote = .
merge = refs/heads/master
Para
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
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.
bu
. Mas isso usa git 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.
some-branch-name
para oorigin
controle remoto, provavelmente poderá digitaro TAB s TAB
e obter o nome desejado.