Magit - Como fazer check-out de uma filial remota localmente sem digitar o nome inteiro da filial?


12

Eu tenho um ramo remoto remote-branch-long-name. Quando realizo check-out com a conclusão do leme, posso digitar remote-branche origin/remote-branch-long-nameaparecer como uma opção. O problema é que, para efetuar o check-out local desse ramo, na verdade não posso mudar para esse ramo, preciso mudar para remote-branch-long-name (without the origin/ prefix), pois o leme não fornece isso como uma opção de conclusão, preciso digitar manualmente todo o nome do ramo.

Existe outra função que eu deveria estar usando para este caso de uso ou tenho que hackear uma função juntos?

Respostas:


22

Parece que o problema que você está tentando resolver não é o problema que está encontrando. O Git não permite que você trabalhe localmente com ramificações remotas (o que origin/remote-branch-long-namevocê vê é apenas uma ramificação de rastreamento; você não pode trabalhar diretamente com ela) e o Magit está orientando você em direção ao fluxo de trabalho pretendido.

Como você deseja trabalhar origin/remote-branch-long-name, provavelmente deve executar magit-branch-and-checkout( b c). Selecione origin/remote-branch-long-namee ele solicitará um nome de filial local e o padrão será "nome remoto da filial remota". Isso fornece a ramificação local necessária para fazer suas alterações. Quando terminar as alterações e pressionar origin/remote-branch-long-name, atualizará o ramo de rastreamento remoto.

Você pode ter ramificações locais com uma barra, mas usar um nome remoto em um nome de ramificação local pode tornar as coisas muito confusas. O Git se lembra de qual remota uma ramificação local foi retirada, para que você não precise rastreá-la.

Para uma explicação mais completa do que a minha resposta aqui (!), Você encontra esta página como uma boa visão geral sobre controles remotos.


7
Eu acho que a desconexão aqui é que o fluxo Magit é diferente do fluxo git. Se você executar git checkout foo, e foonão for um ramo, mas origin/foofor, o git criará um novo ramo fooe o configurará para rastrear origin/foo. Então o git ensina você a pensar "Eu apenas faço checkout fooe o git faz todo o necessário". Mas isso não funciona com o magit; correr magit-branch-and-checkouté o caminho a percorrer.
zck 22/02

4

Desde o magit v2.12.0, existe um comando magit-branch-checkoutvinculado a b l(Filial local do Google Checkout), que faz exatamente o que você deseja. Consulte o documento para obter detalhes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.