Close

Aprenda a fazer ramificações com Bitbucket Cloud

Objetivo

Este tutorial ensina os passos básicos para criar, analisar, mesclar e trabalhar em branches a partir do Git e do Bitbucket Cloud.

Tempo

35 minutos

Público-alvo:

Você já entende o fluxo de trabalho básico do Git

Este tutorial é para pessoas que já conhecem o fluxo de trabalho básico do Git, incluindo como:

  • Clonar: copiar o repositório remoto no Bitbucket Cloud para o sistema local
  • Adicionar ou preparar: pegar as alterações que você fez e as preparar para adicionar ao histórico do Git
  • Commit: adicionar arquivos novos ou modificados ao histórico do Git para o repositório
  • Enviar pull: ver novas alterações que outros adicionaram ao repositório no seu repositório local
  • Push: obter alterações de seu sistema local no repositório remoto

Se você não conhece os fundamentos do Git, não se preocupe: confira o tutorial Aprenda o Git com Bitbucket Cloud e você vai estar preparado para começar em pouco tempo.

Por que ramificar é importante

Ramificar é uma das melhores maneiras de aproveitar ao máximo o Git para ter controle sobre as versões. Ramificar no Git permite:

  • Ter várias equipes trabalhando em um único repositório ao mesmo tempo.
  • Ter membros da equipe em qualquer lugar do mundo usando o Bitbucket Cloud para colaborar.
  • Ter várias linhas de desenvolvimento em execução ao mesmo tempo, independentes umas das outras, sem a necessidade de congelar o código.

Fique com tudo pronto


Como a gente quer que você sinta que está trabalhando em equipe, em um repositório comum do Bitbucket, a gente pede que você bifurque um repositório público que a gente já forneceu.

O que é bifurcação?

Bifurcação é outra forma de salvar um clone ou uma cópia. O termo "bifurcar" (em programação) se deriva de um chamado do sistema Unix que cria uma cópia de um processo existente. Assim, diferente de uma ramificação, uma bifurcação é independente do repositório original. Se o repositório original for excluído, a bifurcação permanece. Se você bifurcar um repositório, vai ficar com esse repositório e todas as ramificações.

1. Acesse tutorials/tutorials.git.bitbucket.org

2. Clique em + > Bifurcar este repositório no lado esquerdo da tela.

3. Modifique o Nome para que seja exclusivo da equipe e clique em Bifurcar o repositório.

4. Crie um diretório para o repositório que seja fácil de navegar. Você pode escolher algo assim:

Logotipo do Bitbucket
VER SOLUÇÃO

Aprenda a usar o Git com o Bitbucket Cloud

Logotipo do Git
Material relacionado

Comandos do Git

$ mkdir test-repositories $ cd test-repositories/ $ test-repositories

O exemplo anterior cria o diretório test-repositories usando o comando mkdir (criar diretório) e entra nesse diretório usando o comando cd (mudar de diretório).

5. Clone o repositório bifurcado no diretório que você acabou de criar. Ele pode se parecer com o seguinte:

$ git clone https://dstevenstest@bitbucket.org/dstevenstest/mygittutorial.bitbucket.io.git     Cloning into 'mygittutorial.bitbucket.io'...     remote: Counting objects: 12392, done.     remote: Compressing objects: 100% (12030/12030), done.     remote: Total 12392 (delta 8044), reused 564 (delta 360)     Receiving objects: 100% (12392/12392), 2.72 MiB | 701.00 KiB/s, done.     Resolving deltas: 100% (8044/8044), done. $ cd mygittutorial.bitbucket.io/

Que clona o repositório utilizando o comando git clone e cria o diretório que o clone criou mygittutorial.git.bitbucket.io.

Crie um branch e modifique algo usando o fluxo de trabalho com branches

Você vai adicionar uma cotação ao seu site nesse branch.

1. Crie uma ramificação usando o comando git branch.

$ git branch test-1

2. Verifique a ramificação que você acabou de criar usando o comando git checkout.

$ git checkout test-1 Switched to branch 'test-1'

3. Liste as ramificações que você tem no local usando o comando git branch.

$ git branch   main   * test-1

4. Faça uma atualização no arquivo editme.html adicionando uma cotação. Você pode usar algo assim:

This is a quote, and I like it.
   A quote: The Art of Quoting 

5. Adicione essa alteração.

git add editme.html

Observação: a alteração ainda não passou pelo commit do histórico do Git, mas está em um estado "Aguardando". Aprendemos sobre esse assunto em Salvar alterações.

6. Confirme a alteração com uma mensagem de commit descritiva.

git commit editme.html -m'added a new quote' [test-1 063b772] added a new quote 1 file changed, 3 insertions(+), 3 deletions(-)

Observação: agora as alterações fazem parte do histórico do Git como um único "commit". Aprendemos sobre esse assunto em Salvar alterações.

7. Envie essa alteração para o Bitbucket usando o comando git push.

git push fatal: The current branch test-1 has no upstream branch. To push the current branch and set the remote as upstream, use   git push --set-upstream origin test-1

Você vai ver um erro porque, na primeira vez que enviar uma nova ramificação criada no local, é necessário designar essa ramificação.

8. Envie a ramificação e alteração usando o comando git push branch.

$ git push origin test-1 Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 363 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: remote: Create pull request for test-1: remote: https://bitbucket.org/dstevenstest/dans.git.bitbucket.org/pull-requests/new?source=test-1&t=1 remote: To https://bitbucket.org/dstevenstest/dans.git.bitbucket.org.git * [new branch] test-1 -> test-1

Assim o sistema é informado de que o repositório de origem é o destino desta nova ramificação.

9. Abra o repositório de tutoriais e clique em Ramificações. Agora você deve ver a ramificação principal e a ramificação test-1. Você deve ver algo assim:

Repositório git central para repositório git local

Crie, capture e verifique um branch remoto

Ao trabalhar em uma equipe, é possível que você tenha que enviar pulls ou buscar branches que outros membros da equipe criam e fazem push no Bitbucket. Este exemplo vai dar a você algumas noções básicas para criar e trabalhar com os branches criados por eles.

1. Acesse o repositório de tutoriais no Bitbucket e clique em Ramificações. Você deve ver algo assim:

Ramificações do tutorial

2. Clique em Criar ramificação, dê a ela o nome test-2 e clique em Criar.

3. Copie o comando git fetch na janela verificar ramificação. É provável que ele seja parecido com o seguinte:

$ git fetch && git checkout test-2 From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org * [new branch] test-2 -> origin/test-2 Branch test-2 set up to track remote branch test-2 from origin. Switched to a new branch 'test-2'

4. Use o comando git branch no terminal. Você deve ver uma lista de ramificações assim:

$ git branch   main   test-1 * test-2

A ramificação com o asterisco * é a ramificação ativa. É fundamental lembrar dessa informação quando você está trabalhando em qualquer fluxo de trabalho de ramificação.

5. Use o comando git status e você vai ver algo assim:

$ git status On branch test-2 Your branch is up-to-date with 'origin/test-2'. nothing to commit, working tree clean

Você pode ver em que ramificação está e que a ramificação está atualizada no momento com sua ramificação remota (origin).

6. Use o comando de git checkout para mudar o foco de volta para sua outra ramificação. O comando vai ser algo assim:

$ git checkout test-1 Switched to branch 'test-1' Your branch is ahead of 'origin/test-1' by 3 commits. (use "git push" to publish your local commits)

Uma das coisas mais importantes a serem lembradas ao trabalhar em ramificações é que você quer ter certeza de que a ramificação na qual está fazendo alterações é a ramificação correta.

Modifique por push e crie uma solicitação pull

Agora é o momento de fazer com que a primeira alteração seja revisada e mesclada no branch.

1. Clique em +> Criar uma pull request. Você pode ver a ramificação test-1 como a ramificação de origem e a ramificação main na ramificação de destino.

Como criamos este repositório bifurcando um repositório existente, o destino é definido como a ramificação principal do repositório que bifurcamos.

Para fazer a correção, vai ser necessário alterar o branch de destino do repositório (o branch no qual você vai mesclar suas alterações) de tutorials/tutorials.git.bitbucket.org para o seu repositório.

Solicitação pull

Você também adiciona revisores à equipe em solicitação pull. Saiba mais sobre solicitações pull

2. Clique em Criar pull request.

3. Faça um comentário na pull request selecionando uma linha na comparação (a área que exibe a alteração que você fez no arquivo editme.html ).

4. Clique em Aprovar na parte superior esquerda da página. É óbvio que, em uma pull request real, você teria revisores fazendo comentários

5. Clique em Mesclar.

6. (Opcional) Atualize a Mensagem de commit com mais informações.

7. Selecione a estratégia de merge Merge commit entre as duas opções: Clique aqui para saber mais sobre esses dois tipos de estratégias de merge.

  • Merge commit: mantém todos os commits do branch de origem e os torna parte do branch de destino. Essa opção é o mesmo que digitar git merge --no-ff na linha de comando.
  • Squash: combina os commits quando ao mesclar o branch de origem no de destino. Essa opção é o mesmo que digitar git merge --squash na linha de comando.

8. Clique em Confirmações e você vai ver como a ramificação que você acabou de mesclar se encaixa no esquema mais amplo de alterações.

Exclua uma ramificação e envie um pull da ramificação principal para a ramificação de trabalho local

Você passou pelo fluxo de trabalho básico de ramificação, e a modificação está no principal. A última coisa que a gente vai aprender é a excluir a ramificação que você acabou de mesclar, enviar a ramificação principal atualizada por pull e fazer merge dela com test-2.

Por que excluir o branch?

Ramificar no Git é diferente dos sistemas de controle de versão SVN ou semelhantes ao usar ramificações como as de execução longa, por exemplo, uma ramificação principal ou de desenvolvimento, e os de desenvolvimento a curto prazo, como os exemplos usados neste tutorial. Como este é o caso, não é uma má ideia excluir as ramificações locais para manter o ambiente local mais organizado.

Por que enviar a ramificação principal por pull e fazer merge com test-2?

Serve como exemplo de quando você está trabalhando em um repositório no qual outro membro da equipe está trabalhando. É uma boa ideia enviar pull de vez em quando com as alterações do branch no qual você está trabalhando para evitar conflitos de merge em solicitações pull.

1. Abra o terminal e execute o comando git status. O resultado deve ser algo assim:

$ git status On branch test-1 nothing to commit, working tree clean

Você pode ver que você está na ramificação que acabou de usar para fazer sua alteração e que você não tem nenhuma alteração. Estamos prontos para nos livrar dessa ramificação agora que terminamos esse trabalho.

2. Mude para a ramificação principal executando o comando git checkout main. O resultado deve ser algo assim:

git checkout main Switched to branch 'main' Your branch is up-to-date with 'origin/main'.

Reparou na mensagem que diz que a ramificação foi atualizada? Ela trata apenas da ramificação local. A gente tem essa informação porque acabou de fazer merge de uma alteração na ramificação principal e não fez envio de pull dessa alteração do repositório remoto para o sistema local. Esse é o próximo passo.

3. Execute o comando git pull. O resultado deve ser algo assim:

$ git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (1/1), done. From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org 2d4c0ab..dd424cb main -> origin/main Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)

O que aconteceu foi o seguinte: quando você envia o pull das alterações do repositório remoto, o git executa um merge de avanço rápido para integrar as alterações que você fez. Ele também lista quantos arquivos e linhas nesse arquivo foram alterados.

4. Execute o comando git branch -d {branch_name} para remover o branch test-1. O resultado vai ser algo assim:

$ git branch -d test-1 Deleted branch test-1 (was 063b772)

Você pode ver que assim o branch foi excluído e que o último hash de commit foi para esse branch. Esta é a maneira segura de excluir um branch, porque o git não vai permitir que você exclua o branch se ele tiver alterações não confirmadas. No entanto, você deve estar ciente de que dessa forma não vai evitar a exclusão de alterações que são confirmadas no histórico do git, mas não mescladas em outro branch.

5. Mude para a ramificação test-2 usando o comando git checkout.

$ git checkout test-2 Switched to branch 'test-2' Your branch is up-to-date with 'origin/test-2'.

6. Faça merge da ramificação principal e da ramificação em que você está trabalhando com o comando git merge main test-2. O resultado vai ser algo assim:

$ git merge main test-2 Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)

É importante se lembrar que:

  • A ramificação ativa é importante. Para fazer merge da ramificação principal com test-2, é necessário que test-2 seja verificada (ativa). A mesma coisa acontece quando você quer fazer merge de test-2 com a ramificação principal: é preciso fazer o check-out da ramificação principal.
  • Para ver qual branch está ativo a qualquer momento, use o git branch e o branch ativo vai ter um asterisco, ou use git status e ele vai informar em qual branch você está e se há alterações locais pendentes.

A gente espera que você tenha aprendido um pouco sobre branches e os comandos envolvidos. Vamos revisar alguns conceitos:

Confira o fluxo de trabalho de branch


O fluxo de trabalho de ramificações de função do Git é uma forma eficiente de começar a trabalhar com a equipe no Bitbucket. Nesse fluxo de trabalho, todo o desenvolvimento de funções ocorre em ramificações diferentes da ramificação principal. Assim, vários desenvolvedores podem trabalhar nas próprios funções sem encostar no código principal.

Comece com a ramificação principal

Este fluxo de trabalho ajuda você a colaborar no código com pelo menos outra pessoa. Desde que os repositórios locais e do Bitbucket estejam atualizados, você está pronto para começar.

Crie um novo branch

Use um branch separado para cada função ou problema em que você trabalha. Depois de criar um branch, verifique-o no local para que todas as alterações que você fizer sejam nessa ramificação.

Atualizar, adicionar, fazer o commit enviar por push as alterações

Trabalhe na função e faça commits como faria sempre que usa o Git. Quando estiver pronto, envie os commits, atualizando a ramificação de funções no Bitbucket.

Faça uma revisão do seu código

Para obter um retorno sobre seu código, crie uma solicitação pull no Bitbucket. A partir daí, você pode adicionar revisores e garantir que tudo esteja correto antes de mesclar.

Resolver Feedback

Agora, seus colegas comentam e aprovam. Resolva os comentários deles no local, confirme e envie as modificações para o Bitbucket. As atualizações aparecem na solicitação pull.

Mescle o seu branch

Antes do merge, talvez seja necessário resolver conflitos de merge caso outras pessoas tenham feito alterações no repositório. Quando a pull request é aprovada e não tem conflitos, você pode adicionar código à ramificação principal. Faça merge a partir da pull request no Bitbucket.

Este tutorial tem por objetivo mostrar como os branches tornam as equipes mais eficientes. Há diferentes formas de ramificar e a gente vai ver algumas delas em: Como comparar fluxos de trabalho.


Compartilhar este artigo

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Pessoas colaborando usando uma parede cheia de ferramentas

Blog do Bitbucket

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Demonstrações de funções no Demo Den com parceiros da Atlassian

Como o Bitbucket Cloud funciona com o Atlassian Open DevOps

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up