O Git atua como um sistema de controle de versões distribuído, enquanto o GitHub funciona como uma plataforma de hospedagem e colaboração para projetos que utilizam essa ferramenta. Através do Git, é possível rastrear modificações, reverter estados e manter a integridade do histórico de um projeto.
Inicialização de um Repositório
Um repositório (ou repository) é o diretório onde o Git monitora todas as alterações de arquivos. Para começar a gerenciar um projeto, o primeiro passo é criar a pasta e inicializar o sistema de monitoramento.
$ mkdir meu-projeto-git
$ cd meu-projeto-git
$ git init
Ao executar o comando git init, o Git cria um subdiretório oculto chamado .git. Esta pasta contém todos os metadados e o histórico de objetos necessários para o funcionamento do conrtole de versão. Para visualizar essa pasta oculta, utilize o comando ls -ah no terminal.
Fluxo de Adição e Confirmação de Arquivos
O processo de salvar alterações no Git ocore em duas etapas principais: a preparação (staging) e a confirmação (commit). Vamos considerar a criação de um arquivo chamado documento.txt dentro da pasta do projeto.
# Conteúdo do arquivo documento.txt
Iniciando o aprendizado de Git.
Este é um sistema robusto de versionamento.
Para incluir este arquivo no controle de versão, utilize os seguintes comandos:
# 1. Adiciona o arquivo à área de preparação (index)
$ git add documento.txt
# 2. Consolida as alterações no histórico do repositório
$ git commit -m "Criação inicial do arquivo de documentação"
O parâmetro -m permite anexar uma mensagem descritiva, essencial para identificar o propósito da alteração no futuro. O Git retornará um resumo informando quantos arquivos foram modificados e quantas linhas foram inseridas ou removidas.
Monitoramento e Comparação de Alterações
Para verificar o estado atual do seu ambiente de trabalho em relação ao repositório, utiliza-se o comando git status. Ele informa quais arquivos foram modificados, quais estão na área de preparação e quais ainda não foram rastreados.
Caso deseje visualizar as mudanças exatas feitas no código antes de adicioná-las, o comando git diff exibe a diferença entre o diretório de trabalho e o último estado salvo.
$ git status
$ git diff documento.txt
Para consultar a lista de todos os commits realizados no projeto, utilize o git log. Ele apresenta o identificador único (hash), autor, data e a mensagem de cada versão gravada.
Navegação entre Versões e Recuperação de Histórico
O Git permite "viajar no tempo" entre diferentes estados do projeto através do comando git reset. O ponteiro HEAD indica a versão atual em que você se encontra.
HEAD^representa a versão imediatamente anterior.HEAD^^representa duas versões atrás.HEAD~npermite retroceder n versões.
Para retornar o projeto ao estado anterior descartando mudanças posteriores, utiliza-se:
$ git reset --hard HEAD^
Se você precisar retornar para uma versão mais recente (um "futuro" que já foi commitado) mas não possui mais o hash no log atual, o comando git reflog é a solução. Ele registra cada movimento do HEAD, permitindo encontrar o identificador de commits que pareciam perdidos.
# Localiza o ID do commit desejado no reflog
$ git reflog
# Retorna para o commit específico usando seu identificador (ex: a1b2c3d)
$ git reset --hard a1b2c3d
Este mecanismo garante que, uma vez que uma alteração tenha sido confirmada com um commit, ela dificilmente será perdida permanentemente, oferecendo segurança total ao ciclo de desenvolvimento de software.