Por que usar um sistema de controle de versão? (Motivação)
Uma maneira de se trabalhar um projeto realizado em grupo é utilizar uma pasta compartilhável em um sistema de armazenamento na nuvem (como Google Drive, Dropbox) e inserir os arquivos utilizados para que toda a equipe possa acessar. A cada modificação por alguém da equipe, o mesmo arquivo seria atualizado por completo, criando diversas “versões”, porém apagando as antigas e sempre visualizando a mais atual. Dependendo da área e dos tipos de arquivos, pode ser uma boa solução. Porém, em especial para desenvolvedores de software, compartilhar arquivos de código com várias pessoas, e modificando-os de maneira mais dinâmica, pode ser um pouco confuso e, futuramente, com o aumento do projeto, pode acarretar em problemas sérios.
Uma solução para esse problema é utilizar um sistema de versionamento de código (version control system). É uma ferramenta de software com a finalidade de gerenciar alterações em seu código (ou de outro tipo de documento) com o passar do tempo. Basicamente, ele “tira fotos” de um momento de seu código, e cria uma linha do tempo conforme você e outras pessoas do seu projeto vão alterando o mesma ou diferentes partes de código.
As vantagens de usar um sistema de controle de versão são:
- Existência de um histórico de alterações completo de todos os arquivos de seu projeto, com informações relevantes a cada modificação (autor, data, notas relevantes), podendo voltar a versões anteriores para corrigir problemas;
- Existência de um sistema de ramificação e mesclagem inteligente de código. Diferentes desenvolvedores podem trabalhar separadamente e em partes diferentes do projeto, e o sistema de versionamento de código lidará com as diferentes ramificações do projeto para cada desenvolvedor, facilitando também na hora de juntar (merge) diferentes ramificações.
O que é Git?
Git é um do sistema de controle de versão criado em 2005 por Linus Tovalds (mesmo criador do kernel do sistema operacional Linux), e é o sistema mais utilizado no mundo, tanto por empresas e projetos comerciais quanto open-source (código-aberto). Ele tem desempenho otimizado, grande segurança e boa flexibilidade para diferentes tipos de projetos e fluxos de trabalho.
Mesmo com todas essas vantagens, nem tudo é perfeito. A desvantagem ou crítica do Git é sua dificuldade no aprendizado, não sendo muito “beginner-friendly” (amigável para inciantes) devido a terminologias específicas e uso do terminal. Porém, como a comunidade abraçou esse sistema de controle de versão, não é difícil encontrar tutoriais de diferentes tipos e linguas pela internet. E também, qualquer problema que houver durante o uso do Git, só procurar o erro no StackOverflow que certamente terá uma resposta para te ajudar.
E o Github?
O Github é uma plataforma para gerenciar seu código remoto (na nuvem) utilizando o Git como sistema de versionamento de controle. Lá, você vai armazenar seus projetos em repositórios, podendo visualizar com mais detalhes e maior facilidade as funcionalidades do Git de seu projeto, além de poder compartilha-lo com os demais desenvolvedores de sua equipe. Existem outras plataformas de gerenciamento de código por Git (ou outros sistemas), como o Gitlab.
Primeiros passos e comandos
Primeiramente, é necessário instalar o Git em seu computador. Existem diferentes maneiras de se instalar o git conforme seu sistema operacional (MacOS, Windows ou Linux/Unix). Recomendo entrar no site https://git-scm.com/downloads para mais informações.
Nesse artigo, irei explicar o uso do Git e Github utilizando a linha de comando, mas também existem diversos clientes GUIs (Interfaces gráficas do utilizador) que facilitam o uso e comunicação do git com o Github. Mais informações em https://git-scm.com/downloads/guis
Para iniciar o Git em um projeto, é preciso acessá-lo pela linha de comando e digitar git init
. Uma pasta “.git” será criada junta aos outros arquivos de seu projeto, e irá monitora-los.
Um conceito importante para a melhor visualização do funcionamento do Git é sobre os estados. Localmente (em seu próprio computador), um arquivo pode estar em 3 estados: modified (modificado), staged (preparando) ou committed (commitado ou “comprometido”). Assim, um fluxo de trabalho básico Git é:
- Um arquivo é modificado no seu diretório/pasta (estado modified), porém ainda não foi adicionado à lista de alterações do próximo commit.
- Utilizando o comando
git add
, o arquivo entra em estado staged. - Utilizando o comando
git commit
, move-se os arquivos para o estado commited.
Nessa etapa, já é possível enviar os arquivos em estado commited para um repositório remoto, como o Github por exemplo. Lá, você criará uma conta gratuita e criará um repositório. Com o comando git push
, enviará os arquivos do local (seu computador) para o remoto (servidor do Github). Assim, poderá compartilhar esse repositório remoto para sua equipe que, utilizando os comandos git clone
e git pull
, terão uma cópia do projeto no computador local deles (eles também devem ter o Git instalado em seus computadores).
É ideal que todos da equipe estejam confortáveis com seu uso e também discutam sobre o melhor jeito de organizar o workflow do Git e Github para garantir o melhor uso deles. Dependendo, é possível até mesmo a equipe do marketing, produto, designers e suporte ao cliente recorrerem ao sistema Git para melhor organização do projeto e trabalho.
Mais informações sobre o uso do Git e do Github: