Controle de versões com o Git
Semana retrasada tivemos uma oficina sobre o uso do Git na Softa.
Em primeiro lugar, gostaria de citar as duas principais referências que utilizei como guia:
O primeiro link dá uma explicação conceitual excelente sobre o assunto, enquanto o segundo aborda pontos mais avançados (magia negra). Para compreender o Git, e não apenas decorar comando, acho fundamental expor alguns conceitos iniciais:
- Repositório: É um conjunto de commits e um conjunto de referências aos commits, chamadas de “heads”. O repositório é criado com um comando git init (inicia o repositório em qualquer pasta) ou git clone (copia um repositório). Todos os arquivos necessários para o git ficam em uma pasta oculta na raiz do projeto chamada ”.git”.
- Commits: Cada commit é uma fotografia do estado dos arquivos no projeto em um instante de tempo. Os commits têm um nome, que é um hash sha1 e um apontador para o commit pai (o commit que deu origem a ele). Então sempre teremos um commit sem pai no repositório (o primeiro) e algumas vezes teremos commits com dois pais (resultados de merges). Logo, o repositório pode ser encarado como um grafo direcionado e acíclico de commits e manipular as versões do projeto é navegar nesse grafo.
- Heads: Aponta para um commit, é apenas um apelido para o nome sha1 do commit em questão. É importante observar que sempre temos um head chamado HEAD (em maiúsculas) que aponta para o último commit realizado.
Depois de ver essa parte conceitual podemos entender melhor alguns comandos clássicos:
- git log – mostra todos os commits de HEAD até o commit inicial.
- git status – mostra arquivos modificados desde HEAD.
- git diff – mostra todas as modificações nos arquivos do projeto desdeHEAD.
Para evitar um post excessivamente grande vou publicar a continuação desse artigo separadamente aqui no blog da Softa.
Posted by Pedro Axelrud