Como funcionam as ramificações do Git? Posso remover o branch master?

20

Eu tenho um projeto que possui 2 filiais, desenvolvimento e produção. Eu não estou usando o branch master e cada vez que eu escrevo git status ele me diz a que distância a minha branch está do master.

Quando tento excluir a ramificação principal git branch -d master , ela é excluída apenas no meu repositório local e não no servidor git remoto. Alguma ideia?

    
por ufk 08.12.2009 / 15:04

2 respostas

32

No Git, uma ramificação é apenas uma lista ordenada de commits (também conhecida como checkins). Algo que pode ser um pouco confuso para novos usuários é que os branches não precisam ter um nome (embora na maioria das circunstâncias você queira um); e não há nada particularmente especial sobre qualquer ramificação em particular (a ramificação master é a única que é criada para você quando você inicializa um repositório).

Você provavelmente já sabe disso, mas o Git é diferente de outros sistemas de controle de versão, como o popular "Subversion", porque cada "cópia de trabalho" (no Subversion) é um repositório próprio ... na verdade, nada é particularmente especial sobre qualquer cópia em particular; exceto que uma cópia foi geralmente aceita como a "canônica" usada para armazenar o produto final.

Então, voltando à sua pergunta ... o repositório "canônico" que você clonou quando iniciou sua cópia local continha uma ramificação "master" por padrão; e está preso por aí. Agora, se você tivesse acesso ao computador que contém o repositório principal, você poderia fazer login e executar:

git branch -d master

No entanto, se você não conseguir fazer isso, ainda poderá fazê-lo na sua máquina local. O comando git branch tem uma opção -r que afeta o repositório remoto. Em outras palavras, a execução do seguinte comando deve funcionar:

git branch -d -r master

Note que em ambos os casos; Estou assumindo que master foi completamente incorporado ao histórico de desenvolvimento no qual sua cópia local está atualmente. Se você nunca usou master (ou seja, você só fez check-in em development ou production ), não há nada com o que se preocupar. No entanto, se você (ou outra pessoa) estiver verificando as coisas em master , talvez você tenha um problema. Você pode forçar uma exclusão alterando o -d para -D nos comandos acima; mas eu recomendo verificar para ver o que está em master de antemão! Se você não tem acesso ao computador remoto, provavelmente não conseguirá recuperá-lo!

A propósito; Se você (ou qualquer outra pessoa) é novo no Git, eu recomendo que você leia Git from the Bottom Up de John Wiegley . Mesmo que eu tenha usado o Git um pouco antes de encontrar este artigo, eu realmente não entendi como funcionava até que eu o lesse. É bastante útil!

    
por 08.12.2009 / 16:17
4

master é o ramo padrão do git. Eu não sei porque é tão terrível para você quando o git lhe diz quão longe você está do mestre, mas se você quiser deletar uma ramificação no seu repositório remoto, apagá-lo localmente não é o suficiente. Tente isso:

git push origin :master

Isso não vai empurrar nada (a parte antes dos dois pontos) para o seu servidor de origem e sobrescrever o mestre. Em outras palavras, ele deve excluir a ramificação principal remotamente.

    
por 08.12.2009 / 15:18

Tags