Poderia começar este artigo explicando o que é o Git e pra quê ele serve, mas a ferramenta já é tão popular, tão utilizada no meio do desenvolvimento de software, que acabaria falando mais do mesmo. Porém, apesar da ferramenta ser grande, popular e amplamente utilizada, não significa que ela seja fácil de usar.
Trazendo a premissa de que podemos trabalhar de forma simultânea em um mesmo repositório com várias pessoas, uma das funcionalidades fundamentais do Git para suportar isso são as branches. Em termos simples, uma branch é literalmente uma ramificação da base do código.
Enquanto mantemos o código de produção na branch principal (por exemplo), podemos criar uma ramificação para trabalhar livremente neste código e somente depois juntar (mergear) estes códigos.
Na teoria tudo isso é muito simples. No entanto, quando começamos a aplicar na prática, o bicho pega. É por isso que eu gostaria de apresentar uma ferramenta muito bem feita para nos ajudar a entender as branches e o funcionamento do Git em geral. Estou falando do Learn Git Branching.
Aprendendo Branches de uma vez por todas
Como a própria descrição do repositório oficial diz, o Learn Git Branching (LGB) é um visualizador de repositório Git, sandbox e uma série de tutoriais e desafios educacionais. Seu objetivo principal é ajudar a nós, desenvolvedores, a entender o Git através do poder da visualização (algo que está ausente quando se trabalha na linha de comando). Isso é feito através de um jogo com diferentes níveis para se familiarizar com os diferentes comandos do git.
Você pode inserir uma variedade de comandos no LGB – à medida que os comandos são processados, a árvore de commits próxima será atualizada dinamicamente para refletir os efeitos de cada comando, como mostra a figura abaixo:
Essa visualização combinada com tutoriais e “níveis” pode ajudar tanto desenvolvedores iniciantes quanto intermediários a aprimorar suas habilidades de controle de versão.
Modo Sandbox
Por padrão, ao iniciar na aplicação entramos no modo Sandbox. Aqui temos a liberdade de fazer qualquer tipo de comando do git para ver seus efeitos. Podemos definir este espaço como o local para testes. Dos comandos disponíveis, além dos que já estão no git, temos:
- undo: desfaz os efeitos do último comando executado
- reset: para recomeçar do zero
- git clone: para simular repositórios remotos
Apesar de bem interessante, este modo não funciona tão bem para quem quer aprender os comandos, mas sim fazer experimentos. Para entender o passo a passo das branches, o ideal é o modo de níveis.
Modo de níveis (levels)
O modo de níveis pode ser visto apenas digitando o comando levels no terminal do LGB. Uma série de desafios com dificuldade gradual serão exibidos. Ao selecionar um, as instruções serão dadas e será sua vez de colocar as mãos na massa!
Além dos desafios, também temos a possibilidade de compartilhar nosso progresso através do comando export tree. Ao fazer isso, um JSON é gerado e podemos utilizar o comando import tree para trazer as informações na tela.
{
"branches": {
"master": {
"target": "C1",
"id": "master",
"remoteTrackingBranchID": null,
"remote": false,
"type": "branch"
}
},
"commits": {
"C0": {
"parents": [],
"id": "C0",
"rootCommit": true,
"type": "commit",
"author": "Peter Cottle",
"createTime": "Fri Dec 07 2018 14:42:09 GMT-0200 (Horário de Verão de Brasília)",
"commitMessage": "Commitando.. Vai Timão!"
},
"C1": {
"parents": [
"C0"
],
"id": "C1",
"type": "commit",
"author": "Peter Cottle",
"createTime": "Fri Dec 07 2018 14:42:09 GMT-0200 (Horário de Verão de Brasília)",
"commitMessage": "Commitando.. Vai Timão!"
}
},
"tags": {},
"HEAD": {
"id": "HEAD",
"target": "master",
"type": "general ref"
}
}
Por fim, conseguimos criar novos níveis com o comando build level. Um passo a passo aparecerá mostrando quais passos devem ser executados para construir nossos níveis customizados.
Conclusão
Não há como negar que o Git se tornou um pré-requisito no mundo do desenvolvimento de software. Ao mesmo tempo, também não há como negar que ela é uma ferramenta complexa e que seu uso só fica mais fácil depois de muita prática (e de quebrar a cara).
O Learn Git Branching é uma ótima opção por apresentar uma interface visual para compreender os passos do fluxo de trabalho no Git. Seja você iniciante ou experiente, há sempre algo novo para aprender e o LGB é de grande ajuda.