Git, GitHub e Gitflow para fofoqueiros - Parte 1

Eloisa Falcão
Zero e Umas
Published in
4 min readMar 26, 2020

Como diria a minha avó, quem conta um conto, aumenta um ponto. E que atire a primeira pedra quem não adora uma boa fofoca. O curioso dessas anedotas é que elas conseguem tomar proporções inimagináveis, é passando de pessoa para pessoa que não se sabe mais qual versão é verdadeira, ou quando surgiu aquele detalhe picante na história.

Mais curioso ainda, é que em desenvolvimento, a mesma coisa acontece, quando mais de uma pessoa trabalha no mesmo projeto é difícil ter um controle sobre as versões que seja eficiente.

Mas antes de continuar, vamos deixar algumas coisas claras.

Git

É o sistema de controle de versões de arquivos (SCV). Possui um framework, pode ser instalado na sua máquina. Ainda é possível conectá-lo ao GitHub, tendo assim um controle local e remoto das versões do seu projeto.

Diferente de outros sistemas de controle de versão, o git entende os dados, como snapshots dos arquivos, ou seja, toda vez que você salvar seu projeto o git vai "tirar uma foto" do arquivos que mudaram. O mais importante aqui, é entender que o git funciona com 3 estágios principais em que os arquivos podem estar. Em tradução bem livre os estágios são:

Modified, ou seja, o seu arquivo foi alterado mas não foi commitado para a database.

Committed significa que os arquivos foram salvos na base de dados local.

Staged (Index) significa que um arquivo modified, foi marcado na versão atual para ser commitado (committed).

O caminho é simples, naturalmente, você altera arquivos no projeto em que está trabalhando, então adiciona esses arquivos para o Index, então commita um snapshot dos arquivos para um diretório git, ou seja, um repositório.

Para entender mais a fundo, todo esse processo, recomendo a leitura do material oficial.

Ainda pensando em git, outro conceito importante é o conceito de branches, criar uma branch é seguir com o projeto por outro caminho que não é a linha principal de desenvolvimento. Podendo assim trabalhar, sem prejudicar a linha principal.

É tirar um snapshot do projeto naquele momento, continuar a partir dele sem interferir na linha principal de desenvolvimento, que o git chama de master, podendo juntar essa branch de volta a linha principal a qualquer momento através de um commit.

E novamente um link para ir mais a fundo no conceito.

GitHub

É um serviço web, cujo as funcionalidades são aplicadas ao git. E por ser um serviço web, você precisa ter uma conta, que a princípio é gratuita, mas você pode fazer upgrades. Além de uma ferramenta de versionamento potente, como o próprio nome já diz, é um grande repositório de código. Nele você consegue encontrar uma variedade de linguagens, pode contribuir com projetos de outras pessoas.

Como existem inúmeros tutoriais de como instalar o Git e conectá-lo ao GitHub, deixo aqui uma sugestão de um artigo bastante completo que pode ajudar você nessa tarefa.

Gitflow, git flow, git-flow…

É um #workflow, o que isso quer dizer? um fluxo de trabalho, uma maneira de gerenciar o versionamento de um projeto, em especial projetos grandes. Ele diz para o time, quais os papéis de cada branch e como elas vão interagir entre elas. O gitflow também possui uma framework e precisa ser instalado na máquina e inicializado em todo projeto que você quiser usar.

Dentro do gitflow a branch master, a linha principal de desenvolvimento, lembra? é apenas para lançamento de versões finalizadas do projeto. Há uma nova branch chamada develop, cujo papel é unir tudo o que for desenvolvido nas outras branches ao longo do processo. As branches de feature, ou seja, agora cada feature criada tem que se encontrar em uma branch diferente. E se encontram na develop. Lembrando que as branches de feature nunca podem ser commitadas direto para a master. As branches de hotfix, que servem para correção de bugs, essas sim, podem ser commitadas direto para a master. E por fim, as branches de release, que fazem a ponte entre e a develop e a master.

Imagem: Atitude Reflexiva

Para continuar estudando sobre o assunto:

E depois dessa chuva de conceito e nome em inglês, vamos tentar formalizar tudo isso juntos no próximo artigo versionando um projetinho, tudo bem? Lembrando que a essa altura eu já estou considerando que você tem instalado o git e o gitflow na sua máquina, e que tem uma conta no github conectada a sua conta do git.

--

--