Entendendo Git — Parte 2 — Uma abordagem prática

Lucas Caixeta Simão
GT Space
Published in
4 min readJul 24, 2019

Durante esse mês temos abordado, em uma pequena série de textos, um dos sistemas de controle de versão mais utilizados nos dias atuais, o Git. No primeiro texto abordamos o funcionamento de um controle de versão e as origens do Git. Hoje veremos uma abordagem prática desta ferramenta e alguns comandos que podem nos ajudar no dia a dia em nossos projetos. Curioso para saber mais? então continue a leitura.

Photo by Yancy Min on Unsplash

Como vimos anteriormente, Git é um sistema de controle de versão distribuído, que permite com que várias pessoas trabalhem com o mesmo conjunto de arquivos. Além disso, Git é capaz de mapear cada alteração feita em um determinado arquivo e assim gravar um registro para que seu estado possa ser recuperado quando necessário.

Para entendermos como o Git gerência esses arquivos e como podemos utiliza-lo, é necessário analisar o ciclo de vida dos status de um arquivo no Git

Ciclo de vida dos Status

Cada arquivo alterado em um projeto, é mapeada pelo Git e recebe um status diferente, de acordo com o progresso de seu desenvolvimento. Para realizar este mapeamento, o Git estrutura um snapshot do repositório local, uma espécie de registro do repositório em um determinado momento no tempo.

Ciclo de vida dos status

Basicamente nesse snapshot, temos dois status para os arquivos, “Monitorados”(Tracked) e “Não monitorados” (Untracked). Arquivos monitorados são aqueles que estavam no ultimo snapshot registrado. Já os arquivos não monitorados são todos os arquivos que não estão presentes no ultimo snapshot — todos os demais arquivos do projeto. Para adicionar um arquivo ao monitoramento basta utilizar o comando “git add”, que inclui os arquivos não monitorados ao status Tracked.

Conforme os arquivos passam por alterações, o Git começa a vê-los como “Modificados” (Modified) e “Não modificados” (Unmodified). Nesse ponto, podemos usar o comando “git commit”, para salvar os arquivos no repositório, obtendo assim, um registro do estado desses arquivos. Logo após, o ciclo se inicia novamente.

Comandos e dicas

Até o momento já aprendemos como é o funcionamento do Git, e vimos os comandos básicos para operá-lo. Mas em diversas situações podemos utilizar outros comandos que são úteis em nosso dia a dia.

Photo by Carl Heyerdahl on Unsplash

“git log” e “git reset”

O comando git log, nos permite ver um histórico dos commits presentes em nosso repositório. Cada commit efetuado recebe um identificador único que pode ser utilizado para voltar o repositório para o estado das alterações presentes em um determinado arquivo.

git log

git stash

Em algumas ocasiões é necessário salvar o que estamos fazendo para realizar alguma outra atividade, talvez atualizar nosso repositório local com o remoto. Para esses casos podemos contar com o comando “git stash, que salva as modificações locais e reverte a area de trabalho para o estado de um “commit” anterior. As modificações salvas podem ser listadas com o comando “git stash list” e podem ser restauradas utilizando o comando “git stash apply”.

git stash

git bisect

Este comando torna o git uma ótima ferramenta para debugar os arquivos de um projeto. Imagine que um erro foi encontrado em um projeto e não conseguimos identificar com clareza onde este erro foi inserido. Por meio deste comando podemos encontrar o commit em que o erro começou e assim fazer as modificações necessárias.

Para isto, basta informar qual o ultimo commit estável e o commit mais recente do projeto. Com essas informações o Git faz uma busca binária e assim pode nos ajudar a encontrar a origem do problema.

git bisect

No próximo e último texto da série, iremos estudar sobre estratégias de ramificação e sobre o git flow, um modo de uso de ramificações sugerido pelo Git. Gostou do texto? compartilhe e comente sobre suas experiências com essa fantástica ferramenta. Até a próxima!

--

--