Usando ramificações

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 na maioria dos 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 um indicador efetivo de um instantâneo de suas mudanças. Quando você quiser adicionar um novo recurso ou corrigir um bug—não importa o tamanho, grande ou pequeno—basta criar uma nova ramificação para encapsular as 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 fazer a mesclagem na ramificação principal.

Tutorial do Git: git branch

O diagrama acima mostra 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 desenvolver esses recursos nas ramificações, é possível não apenas trabalhar em ambos em paralelo, mas também manter a ramificação principal mestre livre de códigos questionáveis.

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 um histórico bifurcado de novo. Por esse motivo, o comando git branch é muito 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:

Tutorial do Git: repositório sem nenhuma ramificação

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:

Tutorial do Git: Criar nova ramificação

Observe que isso apenas cria a nova ramificação. Para começar a adicionar confirmações a ela, é necessário selecionar 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 demonstraram 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 new-remote-repo https://bitbucket.com/user/repo.git
# Adicionar repositório remoto à configuração do repositório local
$ git push <new-remote-repo> crazy-experiment~
# envia a ramificação crazy-experiment para o new-remote-repo

Este comando vai enviar 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 está totalmente mesclada.
Se tiver certeza de que quer excluir, execute 'git branch -D crazy-experiment'.

Isso impede que você perca o acesso a toda a linha de desenvolvimento. Se você quiser mesmo excluir a ramificação (por exemplo, caso seja um experimento que falhou), pode usar o marcador-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 enviar 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 em geral é 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 testar a ramificação?

Tente este tutorial interativo.

Comece agora mesmo