[Tutorial Git] git branch: O que são branches (ramos) no Git?

ダニエリ - Apr 25 '20 - - Dev Community

De maneira simplificada, os ramos (branches) no Git são semelhantes a um ramo de uma árvore, onde o tronco seria a base do código. Desse modo é possível criar diversos ramos e fazer alterações, enquanto a base permanece intacta. Por padrão o ramo principal é denominado de main (master, na versão antiga).

ramos no git

Criando branch

Para criar um branch, digite



$ git branch <nome_do_ramo>


Enter fullscreen mode Exit fullscreen mode
  • $ indica que você deve usar o usuário comum para fazer essa operação.
  • escolha um nome para o seu ramo sem os sinais < e >.

Para ir até o branch criado



$ git checkout <nome_do_ramo>


Enter fullscreen mode Exit fullscreen mode

Para usar um atalho para esses dois comandos acima (criar o novo ramo e ser imediatamente transferida para ele)



$ git checkout -b <nome_do_ramo>


Enter fullscreen mode Exit fullscreen mode

Desse modo o branch será criado e em seguida irá transferir você para lá.

Listar branch

Para listar todos os branches, usa-se o comando:



$ git branch -a


Enter fullscreen mode Exit fullscreen mode

Para saber em qual branch você está, digite:



$ git branch


Enter fullscreen mode Exit fullscreen mode

Excluindo branch

Para excluir um branch, digite



$ git branch -d <nome_do_ramo>


Enter fullscreen mode Exit fullscreen mode

Excluindo branch remoto



$ git push origin --delete <nome_do_ramo>


Enter fullscreen mode Exit fullscreen mode

Unindo branch

Para unir todas as modificações que foram feitas em diferentes branches, ao ramo principal do projeto, digite



$ git checkout main


Enter fullscreen mode Exit fullscreen mode

para ir até o branch principal ou



$ git checkout <nome_do_ramo>


Enter fullscreen mode Exit fullscreen mode

para ir até o branch de destino das alterações.

Então digite



$ git merge <nome_do_ramo_onde_as_alterações_foram_feitas>


Enter fullscreen mode Exit fullscreen mode

O fluxo dos branches será algo como a figura abaixo (unindo branch 1 a main).

merge

Para visualizar os commits de merge:



 $ git log --merges 


Enter fullscreen mode Exit fullscreen mode

Resolvendo conflitos ao unir os ramos no git

Supondo que temos um arquivo na branch main com o seguinte código



def soma(x,y):
    z = x+y
    print(x,"+",y,"=",z)

print('SOMA DOIS NÚMEROS')
num1 = float(input("Digite o primeiro número: "))
num2 = float(input("Digite o segundo número: "))
soma(num1,num2)


Enter fullscreen mode Exit fullscreen mode

E o mesmo arquivo na branch teste, com o código:



def somar(a,b):
    c = a+b
    return c

print('SOMA DOIS NÚMEROS')
numero1 = float(input("Digite o primeiro número: "))
numero2 = float(input("Digite o segundo número: "))
resultado = somar(numero1,numero2)
print(f'Soma: {resultado}')


Enter fullscreen mode Exit fullscreen mode

Ao tentar fazer o merge o git anunciará o conflito:



Mesclagem automática de <arquivo>
CONFLITO (conteúdo): conflito de mesclagem em <arquivo>
Automatic merge failed; fix conflicts and then commit the result.


Enter fullscreen mode Exit fullscreen mode

Desse modo, é preciso primeiro resolver a situação conflitante (escolhendo as partes do código que deseja manter) e em seguida fazer o commit. Só após isso a união dos branches (ramos) será concluída.

Caso deseje desfazer esse processo, digite:



$ git merge --abort


Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .