TriadWorks - Controlando as alterações dos seus projetos com o Git
Vamos pegar um trabalho de conclusão de curso como exemplo. É muito complicado você gerenciar todas as alterações de um arquivo como de um TCC onde você adiciona conteúdo, faz alterações, corrige problemas de formatação, coloca tudo posicionado nas normas da ABNT e acabam surgindo outros problemas.
Imagine que você fez uma modificação no seu arquivo tcc-v3-corrigido.odt e do nada tudo perdeu sua formatação. Como podemos reverter o arquivo para um estado que ainda estava correto? Como saber qual foi a mudança que causou o problema? Bem, normalmente teríamos que ter o backup das alterações anteriores para que não seja necessário editar o arquivo fazendo as correções.
Para resolver esse problema foram criadas as ferramentas de versionamento. São ferramentas especificas para organizar as alterações que foram feitas em seu projeto, onde se pode especificar o que e o porquê algo foi modificado e caso seja necessário nós podemos desfazer essas modificações sem muito esforço.
A ferramenta de versionamento mais famosa que temos é o git e por isso vamos aprender um pouco sobre como utiliza-la.
A maioria das funcionalidades do git são offline, nele sua própria maquina é um repositório onde nós podemos gravar as alterações dos arquivos, reverter alterações, criar galhos para uma alteração especifica, e tudo isso garantindo a integridade de todos os arquivos do projeto.
E quando estiver online é possível enviar essas alterações para repositórios remotos que podem ou não replicar essas alterações para mais outros repositórios!
Utilizar um repositório remoto é opcional e aqui nós vamos focar apenas no básico de trabalhar com o git no repositório local.
Para saber mais sobre a ferramenta de versionamento git, clique aqui.
Antes de tudo nós precisamos instalar o git em nosso computador que pode ser feito seguindo o passo a passo deste link
A primeira coisa que precisamos fazer é iniciar nosso projeto com o git, e para isso nós precisamos criar uma pasta que vai conter os documentos ou arquivos do nosso projeto.
Aqui vou criar a pasta meuProjeto e colocar um arquivo ou pasta qualquer dentro dele. Nesse caso, vou criar um arquivo chamado meuTcc.odt para testarmos.
Depois da pasta criada, abrimos o terminal e navegamos até essa pasta e digitamos o comando git init.
O git init vai começar a gerenciar o conteúdo dentro dessa pasta a partir do momento que foi invocado e qualquer alteração realizada nos arquivos e pastas dela poderão ser visualizadas com o comando git status.
Ao digitar git status podemos ver que os arquivos da pasta são mostrados em vermelho, o que significa que eles ainda não foram versionados pelo git. Para adicionar os arquivos para serem versionados precisamos adiciona-los com o comando git add --all caso queiramos adicionar TODOS os arquivos ou git add <nome_do_arquivo>, que no nosso exemplo ficaria git add meuTcc.odt.
Com mais um git status podemos ver que os arquivos ficaram na cor verde e que podemos submeter as alterações.
Para submeter as alterações nós utilizamos o comando git commit -m "Meu primeiro commit", que irá garantir que todas as alterações foram salvas no git e deixar a mensagem "Meu primeiro commit" para que saibamos o que foi alterado no git commit.
Vamos fazer uma alteração no nosso arquivo meuTcc.odt. Adicione qualquer coisa, como por exemplo: "ùltima alteração feita no arquivo". Depois é só adiciona-lo com o git add -A e persistir a alteração com o git commit -m "Alteração feita no arquivo meuTcc.odt".
Se digitarmos o comando git log podemos ver todos os commits que fizemos e a descrição de cada um desses commits.
Agora digamos que queremos reverter um commit? Nós fizemos uma alteração errada e gostariamos de voltar o arquivo ao estado anterior dele. Como fazemos?
É mais simples do que parece. Nós utilizamos o comando git reflog, que irá mostrar todos os commits feitos com seu ID e NOME
E depois usamos o git reset --hard <ID ou NOME>. Podemos utilizar tanto o ID quanto o NOME do commit onde o ID será o primeiro valor do git reflog e o NOME será o segundo valor (por exemplo: HEAD{5}).
Dessa forma poderiamos então voltar para o commit que quisermos e caso seja necessário voltar para o commit que estavamos antes é só fazer mais um git reflog, ver qual o commit que queremos, e usar o git reset --hard <ID ou NOME> onde o ID ou o NOME é o commit que queremos.
Neste artigo utilizamos um documento de texto como exemplo, mas nós podemos fazer o controle das alterações em qualquer tipo de arquivo. É importante utilizarmos as ferramentas de versionamento para organizar as alterações que fazemos em nossos projetos. Dessa forma fica fácil desfazer uma mudança caso algo tenha saído errado sem precisar criar centenas de cópias diferentes de um único arquivo.
Podemos utilizar o git em conjunto com a sincronização do Google Drive, Dropbox e similares e ter todo o controle de versionamento do projeto salvo na nuvem. Mas para projetos com mais de um colaborador simultâneo o ideal é utilizar repositórios criados especificamente para essa funcionalidade como o Github, Gitlab, BitBucket etc.
O que foi apresentado aqui é apenas uma introdução para utilização do git em um projeto pessoal. Existem diversas outras funcionalidades para utilizadas para se trabalhar com múltiplos colaboradores e manter controle sobre todas as alterações feitas sem que ajam conflitos.
Toda essa parte de repositórios e comandos para trabalhar com outros colaboradores nós vamos deixar para um próximo artigo. ;)
Se você ficou interessado em aprender mais sobre o git, então dá uma olhada neste joguinho que ensina como utilizar outros comandos.