Conceitos Basicos do Git
Git e um sistema de controle de versao distribuido. Cada desenvolvedor possui uma copia completa do repositorio e pode trabalhar offline.
Caracteristicas do Git: Gerencia arquivos atraves de snapshots, registrando o estado completo em vez de apenas diferencas.
Tipos de Objetos Git
Git gerencia dados usando 4 tipos de objetos:
1. Blob (Binary Large Object)
Objeto que armazena o conteudo de um arquivo. Nao inclui o nome do arquivo, apenas os dados puros.
# Verificar objeto blob
git cat-file -p <blob-hash>
2. Tree
Objeto que representa a estrutura de diretorios. Contem referencias a blobs ou outras trees, junto com nomes de arquivos.
3. Commit
Objeto que registra um snapshot:
- Referencia para a tree de nivel superior
- Referencia para o commit pai
- Informacoes do autor e committer
- Mensagem de commit
4. Tag
Objeto que atribui um nome a um commit especifico. Usado para gerenciar versoes de release.
Hash SHA-1
Todos os objetos sao identificados por um hash SHA-1. Como o mesmo conteudo sempre resulta no mesmo hash, dados duplicados podem ser eliminados eficientemente.
# Verificar hash de um objeto
git hash-object README.md
# Verificar hash do commit
git log --oneline
Como Branches Funcionam
Um branch e simplesmente um “ponteiro para um commit”. Criar um novo branch apenas adiciona um ponteiro, sem copiar dados.
# A essencia do branch (.git/refs/heads/main)
cat .git/refs/heads/main
# → Exibe o hash do commit
O que e HEAD: E um ponteiro que indica o branch atualmente em checkout. Esta registrado no arquivo .git/HEAD.
Tipos de Merge
Merge Fast-forward
Quando nao ha divergencia, completa-se simplesmente avancando o ponteiro.
Merge 3-way
Quando ha divergencia, compara o ancestral comum e ambos os branches para criar um novo commit de merge.
Resumo
Git implementa controle de versao eficiente e confiavel usando 4 tipos de objetos (blob, tree, commit, tag) e hashes SHA-1. Entender que branches sao apenas ponteiros torna as operacoes do Git mais intuitivas.
← Voltar para a lista