Versionamento de Código utilizando Git/GitFlow/GitHub

Versionamento de Código utilizando Git/GitFlow/GitHub

Conhecendo o Git

Git – é uma das, senão a mais utilizada ferramente de SCM (Source Control Management) presentes no mercado de TI e um ponto muito importante, é disponibilizado de forma 100% Open Source. O Git foi desenvolvido em 2005 por Linus Torvalds após a revogação da licença do BitKeeper, utilizado até então para manter o código fonte do Kernel Linux.

Atualmente é a principal ferramenta de gerenciamento de código fonte, sendo a base para as metodologias de desenvolvimento ágil, como: XP, Agile, Scrum. Não somente nessas metodologias, mas entrando também no universo DevOps, onde vemos as soluções de SCM como a base para as esteiras de desenvolvimento como o Continuous Integration e Continuous Delivery, conhecido como Pipeline CI/CD.

 

Para esse post a ideia é apresentar o básico da utilização do Git e como integrar com gerenciamento de repositório remoto com Github.

 

Parte 1 – Básico de Git

Criando Repositórios Locais

Para criar um repositório local basta ter o git instalado (yum/apt install -y git), feito isso crie o repositório com o comando:

git init

Após executar esse comando um diretório oculto será criado com nome .git, armazenando todas as alterações commitadas.

 

Configurando Usuário e Email para commits

git config --global user.name "Júlio Ballot"

git config --global user.email "julio.ballot@4linux.com.br"

 

Ciclo de Vida

O git possui um ciclo de vida bem simples:

untracked – arquivos e diretórios não controlados/rastreados pelo git

unmodified – arquivo já adicionados e sem modificações

modified – arquivos adicionados mas que possuem alterações a serem adicionadas.

staged – arquivos novos e/ou já modificados que estão prontos para serem adicionados a base git.

 

Assim que um arquivo entra em modo staged ele está pronto para ser commitado, isso quer dizer,  que será gravado na base do repositório local git.

 

Adicionando/Removendo arquivos

git add .

git add *

git add <arquivo/diretório>

 

A diferença dentre esses três comandos está no que exatamente será adicionado, os dois primeiros irão adicionar todo conteúdo presente do diretório atual e qualquer um abaixo deste. Já o terceiro comando adiciona um arquivo ou diretório em particular. Essa diferança é muito importante pois arquivos desnecessários podem acabar sendo adicionados ao repositório.

Para remover um arquivo e/ou diretório basta executar o comando:

 

git rm <arquivo>

git rm <diretório> -r

 

Com a opção -r removemos recursivamente os arquivos do diretório eliminando o diretório por último.

 

Primeiro Commit

Com nosso código totalmente editado e adicionado ao repositório devemos registrar as informações na base de dados no git. Para tal utilizando o comando git commit que cria um snapshot do seu filesystem naquele devido momento. O comando deve ser seguido de uma mensagem que irá identificar as alterações ali salvas, ficando:

 

git commit -m "Criando o primeiro commit"

Com isso terminamos a primeira parte com o básico de utilização do git. Iremos agora ver como gerenciar as branchs de desenvolvimento e como realizar o merge, mesclando todas essas alterações.

 

Parte 2 – Branchs e Merge

Branchs são ramos, partes de seu código que adicionariam alguma funcionalidade ou que de alguma forma se diferenciam da versão presente na branch principal, branch MASTER.

Para verificar as branchs existentes utilize o comando:

git branch

 

Para criar uma nova branch apenas informe o nome dessa nova branch após o comando branch.

git branch feature_network_proxy

 

Para utilizar essa nova branch rode o comando  checkout, ele irá mudar seu filesystem com as informações presentes nessa nova branch. Quando uma branch é criada ela não é vazia. O que acontece é uma cópia da branch atual. Se adicionar uma informação em uma branch, como criar um novo arquivo ou adicionar o conteúdo a um arquivo como uma nova função, o git irá criar uma diferença entre essas branchs, basicamente uma nova ramificação de seu código.

Para que possamos mesclar essa informação, devemos utilizar do comando merge. Ele mescla as alterações feitas de uma branch com o conteúdo de outra. Dessa forma conseguimos criar uma evolução de todo processo de desenvolvimento do código e caso necessário podemos reverter estas alterações.

 

Executando o merge:

git merge feature_network_proxy

Em alguns casos um conflito pode ocorrer, necessitando de alterações manuais para decidir qual alteração deve prevalecer no arquivo e como resultado daquela ação de merge.

 

Parte 3 – Repositórios Remotos com GitHub

Para esse caso precisaremos de uma conta criada no GitHub. Essa plataforma aberta de versionamento de código permite que salvemos nossa evolução de desenvolvimento em um repositório remoto ao repositório git local. Para que isso seja possível, devemos adicionar o repositório remoto com comando “git remote add origin <URL_DO_REPOSITÓRIO>“. Dessa forma estaremos referenciando o repositório remoto pelo nome origin.

git remote add origin&amp;nbsp;https://github.com/USUÁRIO/REPOSITÓRIO.git

 

Para adicionarmos nosso código no repositório remoto, basta realizarmos a ação de PUSH que irá enviar os dados ao servidor do GitHub.

git push origin master

Onde master é na verdade a branch que vc deseja enviar para o repositório remoto. No caso estamos enviando a branch master.

 

Em um caso inverso, onde desejamos realizar a atualização do nosso repositório local com a informação presente no repositório remoto, para isso realizamos a ação de PULL baixando o código.

git pull origin master

 

Com isso, já temos uma noção básica de como utilizar a ferramenta Git integrada com GitHub.

 

No próximo item veremos uma abordagem de gerenciamento de branch amplamente utilizada, o GitFlow.

 

Parte 4 – GitFlow

GitFlow é uma forma de gerenciamento de branch, ela propõe uma forma de configurar as branchs para que se tenha uma separação em Master, Release, Desenvolvimento, Features e Hotfix, sendo:

 

Master – Branch principal, que conteria seu código de produção.

Release – Branch para release, lançamento de versões de sua aplicação que posteriormente poderiam ser mergiadas na branch master.

Desenvolvimento – Branch para manter o código em atual desenvolvimento.

Features – Branchs que são copias de desenvolvimento onde justamente acontece a criação de uma nova funcionalidade do software.

Hotfix – Branch criada quando realiza-se alguma atualização de segurança que normalmente precisa entrar diretamente em produção.

 

Dessa forma criamos um processo de melhoria contínua do código, composto de etapas de desenvolvimento e lançamento de releases. Tendo esse processo finalizado podemos evoluir para um estágio mais avançado com Continuous Integration e Continuous Delivery.

 

A 4Linux disponibiliza mais de 300 horas de conteúdo focado na área de DevOps, incluindo as técnicas apresentadas neste post.

Para saber mais, acesse: https://www.4linux.com.br/devops

 

CURSOSCONSULTORIA    CONTATO

Anterior Crie, versione e compartilhe sua infraestrutura através de Códigos com Ansible Galaxy!
Próxima 4Linux lança novo conteúdo preparatório para LPIC-3 - 303

About author

Julio Ballot
Julio Ballot 4 posts

Júlio Rangel Ballot atua como Analista de Infraestrutura em Software Livre, formado em Engenharia de Computação pela Universidade de Taubaté. Possui experiência em Administração de Sistemas Open Source e ferramentas voltadas a práticas DevOps, com ênfase em CI/CD (Continuous Integration / Continuous Delivery), atuando há 10 anos ná area de Tecnologia da Informação. Detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, sendo certificado LPIC-1 e Exin DevOps Master.

View all posts by this author →

Você pode gostar também

Desenvolvimento

Torne-se um Desenvolvedor Front-end com o Curso de HTML5 e CSS3 Online

Você já olhou para algum site e se perguntou como toda aquela estrutura funciona? Já parou para pensar como tudo é definido em um site, e quis saber como é

DevOps

Minishift — Openshift Origin como ambiente de desenvolvimento

O Minishift compõe uma versão simplificada do Openshift Origin. Pode ser instalado no VirtualBox e utilizado como ambiente de desenvolvimento. O objetivo deste artigo, é mostrar a instalação e uso dessa plataforma, até

DevOps

DevOps “Enterprise” será a tendência em 2018

Em 2013 eu escrevi um artigo intitulado “Por que você deve aprender Linux?” e quem teve a oportunidade de aprender linux nestes últimos 4 anos deve estar bem feliz com