CodeGym /Cursos /Frontend SELF PT /Trabalhando com branches do git no IntelliJ IDEA

Trabalhando com branches do git no IntelliJ IDEA

Frontend SELF PT
Nível 20 , Lição 3
Disponível

11.1 Branches no Git

Trabalhar com branches no Git é um dos aspectos chave do gerenciamento de versão, permitindo que você desenvolva várias linhas de desenvolvimento paralelas em um repositório. O branching torna o Git uma ferramenta poderosa para colaboração, experimentação e gerenciamento de diferentes versões de um projeto.

Branches no Git

Você pode pensar nos branches no git como pastas onde o git copia seu projeto. Você tem a pasta principal do seu projeto no seu repositório localmaster, e o git pode criar cópias dessa pasta para que você possa experimentar algo nelas sem quebrar o código principal que está funcionando bem. Essas pastas-cópias são chamadas de branches.

Branches são alternativas do código. Suponha que você queira redesenhar algo em um grande projeto ou fazer um experimento que você não tem certeza se dará certo. Como você faria isso sem o git?

Você poderia copiar o projeto para uma nova pasta e tentar mudar tudo lá. Se o resultado lhe agradar, você poderia copiar para a pasta principal. Se não gostar, pode esquecê-la, ou até deletá-la.

Ou vamos pegar um exemplo do dia a dia. Digamos que você esteja escrevendo um livro:

  1. Você tem o manuscrito do livro (branch principal).
  2. Você quer experimentar mudar o final (criando um novo branch).
  3. Você escreve o novo final em um documento separado (trabalhando no novo branch).
  4. Se o novo final for melhor, você substitui o antigo no manuscrito (merge dos branches).
  5. Elimina o documento separado com o novo final (deletando o branch).

11.2 Criando branches

Criar um branch no IntelliJ IDEA é muito fácil:

Criando branches

Digite o nome do branch:

Criando branches

O IntelliJ IDEA irá imediatamente exibir o nome do seu current branch no topo do menu:

Criando branches

E o que estava lá antes?

Lá estava o nome do seu primeiro e principal branch — master.

Agora, aparece test, o que significa que o Git (sob a orientação do IntelliJ IDEA) não apenas criou um novo branch, mas também já mudou para ele.

Vamos adicionar algum código ao arquivo main.html no branch atual (test) e fazer o commit:

Criando branches

11.3 Alternando entre branches

Passo 1. Escolhendo um branch.

Agora, vamos mudar para o nosso branch antigo. Clique no menu superior, e o que você vê?

Alternando entre branches

Não se assuste — é tudo simples:

Local — é a lista de branches do seu repositório git local. Aqui temos dois:

  • test
  • master

Remote — é o seu repositório remoto, que está no servidor GitHub. Nele só enviamos suas alterações, mas o novo branch não está lá, o que é lógico. O repositório remoto tem o nome origin, e nele há apenas o branch master.

Recent — é apenas uma lista dos nomes dos últimos branches em que você trabalhou: este item o IntelliJ IDEA adiciona para conveniência e rapidez.

O nome origin/master à direita do nome do repositório local — é o nome do repositório remoto com o qual ele está sincronizado, e para onde as alterações serão enviadas.

Passo 2. Carregando o código do branch na pasta atual.

Alternando entre branches

Passo 3. Verificando.

Aparece para mim o branch "master" e o antigo código:

Verificando

11.4 Mesclagem de branches

Agora vamos tentar combinar o código dos nossos dois branches.

Passo 1. Primeiro, vamos adicionar ao nosso projeto outro arquivo — index.html e escrever algum código nele:

  • Criando o arquivo index.html
  • Escrevendo nele o código <h1>Hello</h1>
  • Comitando o arquivo

Veja como meus dois arquivos aparecem no branch master:

Mesclagem de branches

Passo 2. Mesclando branches.

Vamos mesclar no nosso current branch (master) as alterações que foram feitas no branch test.

Para isso, também usamos o menu superior e o comando "Merge ‘test’ into ‘master’":

Mesclagem de branches

Passo 3. Verificando o resultado.

Mesclagem de branches

Verificamos:

  • Ainda mostra o branch master no topo
  • Temos 2 arquivos: index.html e main.html
  • O arquivo main.html contém o código que foi adicionado no branch test

11.5 Conflitos na mesclagem

Às vezes, ao mesclar branches, surgem conflitos.

Se você fizer alterações em um mesmo arquivo em diferentes branches e tentar combiná-los, pode ocorrer um conflito.

Conflito de arquivos de texto

Git — é um sistema muito inteligente — entende os tipos de arquivos. Se você fizer alterações em diferentes locais dos arquivos que ele considera serem de texto, ele simplesmente transferirá as alterações de um arquivo para o outro no lugar certo (assim como um humano faria).

Conflito de arquivos binários

Mas se você editar alguma imagem ou documento, o Git não tentará combinar suas partes em um só: ele simplesmente perguntará qual versão do arquivo você quer manter no atual branch.

Resolução manual de conflitos

Se você fizer alterações no mesmo lugar em um arquivo de texto, o Git não conseguirá combinar corretamente as diferentes versões e pedirá que você faça isso:

Conflitos na mesclagem

Veja como isso pode parecer:

Conflitos na mesclagem

O que você vê aqui:

  • À esquerda — conteúdo do arquivo main.html do branch master
  • À direita — conteúdo do arquivo main.html do branch test
  • No meio, o IntelliJ IDEA sugere que você escreva a versão final do código (você pode clicar nos botões ">>" e "<<", para automaticamente inserir alterações de algum arquivo)

Eu aceitei a versão mater e adicionei o código manualmente. Veja o que consegui:

Conflitos na mesclagem

11.6 Histórico de mudanças

Mais uma coisa útil e interessante. Você pode ver o histórico de mudanças de qualquer arquivo, clicando no botão Show History. Existem dois lugares onde ele pode estar. Encontre-o.

Veja como está o histórico de mudanças para mim no arquivo main.html:

Conflitos na mesclagem

Explicações:

  • À esquerda, você vê o histórico de mudanças de um arquivo específico:
    • Quanto mais novo a mudança, mais alto, quanto mais velho – mais baixo
    • Também mostra o histórico de merges de branches
  • À direita — as mudanças que foram feitas em um commit específico
1
Pesquisa/teste
Elementos Decorativos, nível 20, lição 3
Indisponível
Elementos Decorativos
Elementos Decorativos
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION