Using branches

Git Branch


Este documento é uma revisão mais profunda do comando git branch e uma discussão do modelo geral de ramificação do Git. A ramificação é um recurso disponível nos sistemas de controle de versão mais modernos. A ramificação em outros VCSs pode ser uma operação cara tanto em questão de tempo quanto de espaço em disco. No Git, as ramificações fazem parte do processo de desenvolvimento diário. As ramificações do Git são efetivamente um indicador para uma captura de tela de suas mudanças. Quando quer adicionar um novo recurso ou corrigir um bug—não importa o tamanho, grande ou pequeno—você cria uma nova ramificação para encapsular suas mudanças. Isso faz com que seja mais difícil um código instável ser mesclado com a base de código principal e dá a chance de você limpar seu histórico futuro antes de mesclá-lo na ramificação principal.

Git Tutorial: git branch

O diagrama acima visualiza um repositório com duas linhas isoladas de desenvolvimento, uma para um recurso pequeno e outra para um recurso de duração mais longa. Ao desenvolvê-los nas ramificações, não é possível apenas trabalhar em ambos em paralelo, mas também manter a ramificação mestre principal livre de código questionável.

A implementação atrás de ramificações do Git é muito mais leve do que outros modelos do sistema de controle de versão. Em vez de copiar arquivos de diretório para diretório, o Git armazena uma ramificação como referência a uma confirmação. Nesse sentido, uma ramificação representa a ponta de uma série de confirmações—não é um contêiner para confirmações. A história de uma ramificação é extrapolada através de relações de confirmação.

Enquanto você lê, lembre-se de que as ramificações do Git não são como ramificações do SVN. Considerando que as ramificações do SVN são usadas apenas para capturar o esforço de desenvolvimento em grande escala ocasional, as ramificações do Git são parte integrante do seu fluxo de trabalho diário. O conteúdo a seguir vai ser expandido sobre a arquitetura interna de ramificação do Git.

Como funciona

Uma ramificação representa uma linha independente de desenvolvimento. As ramificações funcionam como uma abstração para o processo de edição/estágio/confirmação. Você pode pensar nelas como uma forma de solicitar um diretório de trabalho, uma área de staging e um histórico do projeto totalmente novos. Novas confirmações são registradas no histórico para a ramificação atual, que resulta em uma bifurcação na história do projeto.

O comando git branch permite criar, listar, renomear e excluir ramificações. Ele não permite que você alterne entre as ramificações ou reúna uma história bifurcada novamente. Por esse motivo, o comando git branch é firmemente integrado com os comandos git checkout e git merge.

Opções comuns

git branch

Listar todas as ramificações no seu repositório. Isso é sinônimo de git branch --list.

git branch <branch>

Criar uma nova ramificação chamada <branch>. Isso não verifica a nova ramificação.

git branch -d <branch>

Excluir a ramificação especificada. Esta é uma operação “segura” em que o Git impede que você exclua a ramificação se tiver mudanças não mescladas.

git branch -D <branch>

Forçar a exclusão da ramificação especificada, mesmo que ela tenha mudanças não mescladas. Este é o comando a ser usado se você quiser excluir de modo permanente todas as confirmações associadas a uma linha particular de desenvolvimento.

git branch -m <branch>

Renomear a ramificação atual para <branch>.

git branch -a

Listar todas as ramificações remotas. 

Como criar ramificações

É importante entender que as ramificações são apenas indicadores para confirmações. Quando você cria uma ramificação, tudo o que o Git precisa fazer é criar um novo indicador, ele não muda o repositório de nenhuma outra maneira. Se você começar com um repositório que seja parecido com o seguinte:

Git Tutorial: repository without any branches

Em seguida, você cria uma ramificação usando o comando a seguir:

git branch crazy-experiment

A história do repositório permanece inalterada. Tudo o que você tem é um novo indicador para a confirmação atual:

Git Tutorial: Create new branch

Note que isso apenas cria a nova ramificação. Para começar a adicionar confirmações a ela, é necessário selecioná-la com git checkout e, em seguida, usar os comandos git add e git commit padrão. 

Como criar ramificações remotas

Até agora, todos esses exemplos têm demonstrado operações de ramificação local. O comando git branch também funciona em ramificações remotas. Para operar em ramificações remotas, um repositório remoto deve ser configurado primeiro e adicionado à configuração do repositório local.

$ git remoto adicionar novo repositório remoto https://bitbucket.com/user/repo.git
# Adicionar repositório remoto à configuração do repositório local
$ git push <new-remote-repo> crazy-experiment~
# empurra a ramificação crazy-experiment para o novo repositório remoto

Este comando vai empurrar uma cópia da ramificação local crazy-experiment para o repositório remoto <remote>.

Como excluir ramificações

Depois que terminar de trabalhar em uma ramificação e tiver feito a mesclagem dela com a base de código principal, você está livre para excluir a ramificação sem perder nenhuma história:

git branch -d crazy-experiment

No entanto, se a ramificação não tiver sido mesclada, o comando acima enviará uma mensagem de erro:

erro: a ramificação 'crazy-experiment' não foi totalmente mesclada.
Se tiver certeza de que quer excluí-la, execute 'git branch -D crazy-experiment'.

Isso impede que você perca o acesso a toda a linha de desenvolvimento. Se você realmente quiser excluir a ramificação (por exemplo, for um experimento que falhou), será possível usar o sinalizador -D em maiúscula:

git branch -D crazy-experiment

Isso exclui a ramificação independentemente de seu status e sem avisos, portanto, use com critério.

Os comandos anteriores excluirão uma cópia local de uma ramificação. A ramificação ainda pode existir nos repositórios remotos. Para excluir uma ramificação remota, execute o seguinte.

git push origin --delete crazy-experiment

Ou

git push origin :crazy-experiment

Isso vai empurrar um sinal de exclusão para o repositório de origem remota que aciona uma exclusão da ramificação remota crazy-experiment.

Resumo


Neste documento, discutimos o comportamento da ramificação do Git e o comando git branch. As funções principais dos comandos git branch são criar, listar, renomear e excluir ramificações. Para operar melhor nas ramificações resultantes, o comando geralmente é usado com outros comandos como git checkout. Saiba mais sobre as operações de ramificação git checkout, como alternar e mesclar ramificações, na página do git checkout.

Comparadas a outros VCSs, as operações de ramificação do Git são baratas e usadas com frequência. Essa flexibilidade permite uma poderosa personalização do fluxo de trabalho do Git. Para obter mais informações sobre fluxos de trabalho do Git, visite as páginas de discussão do fluxo de trabalho estendido: O
Fluxo de trabalho de ramificação do recurso
, Fluxo de trabalho de GitFlowFluxo de trabalho de bifurcação

Pronto para tentar a ramificação?

Tente este tutorial interativo.

Comece agora mesmo