Guia Prático de Comandos Essenciais do Git para Fluxos de Trabalho

Arquitetura de Dados do Git

Para utilizar o Git de forma eficiente, é fundamental compreender os quatro estados principais de um arquivo no ciclo de vida do versionamento:

  • Working Tree (Diretório de Trabalho): Local onde os arquivos são editados atualmente. Contém modificações que ainda não foram preparadas para commit.
  • Staging Area (Index): Área de preparação onde as mudanças são marcadas para serem incluídas no próximo snapshot (commit).
  • Local Repository (Repositório Local): Onde os commits são armazenados permanentemente na sua máquina após a confirmação.
  • Remote Repository (Repositório Remoto): Versão do projeto hospedada em servidores como GitHub, GitLab ou Bitbucket.

O HEAD atua como um ponteiro móvel que indica em qual branch ou versão o seu diretório de trabalho se encontra no momento.

Configuração de Ambiente

Antes de iniciar as contribuições, configure sua identiadde global no sistema:

# Define o nome de usuário e e-mail global
git config --global user.name "Seu Nome"
git config --global user.email "seuemail@exemplo.com"

# Visualiza as configurações ativas
git config --list

# Remove uma configuração específica
git config --global --unset user.name

Obtenção de Projetos

Para baixar um repositório existente para sua máquina local:

# Clona o repositório completo (branch padrão)
git clone <url_do_repositorio>

# Clona apenas uma branch específica
git clone -b develop <url_do_repositorio>

Manipulação de Arquivos e Staging

Gerencie quais alterações devem ser levadas para o próximo commit:

# Adiciona arquivos específicos ao Index
git add index.html script.js

# Adiciona um diretório completo, incluindo subpastas
git add ./src

# Adiciona todas as modificações do diretório atual
git add .

# Adiciona partes de arquivos de forma interativa
git add -p

# Remove arquivos do diretório de trabalho e do Index
git rm arquivo_obsoleto.log

# Remove do Index mas mantém o arquivo no diretório de trabalho
git rm --cached configuracao.local

Consolidação de Alterações (Commit)

Registre as mudanças preparadas no repositório local:

# Commit básico com mensagem descritiva
git commit -m "Refatoração do módulo de autenticação"

# Pula a área de staging e commita todas as alterações de arquivos rastreados
git commit -a -m "Correção rápida de bug no CSS"

# Altera a mensagem do último commit ou adiciona novos arquivos a ele
git commit --amend -m "Mensagem corrigida do último commit"

Sincronização com Repositórios Remotos

Envie e receba atualizações de servidores externos:

# Envia a branch local para o servidor remoto
git push origin feature/novo-layout

# Envia e define o rastreamento (upstream) para commits futuros simples
git push -u origin main

# Busca atualizações do servidor sem mesclar com o código local
git fetch origin

# Baixa atualizações e tenta mesclar automaticamente na branch atual
git pull origin main

Gerenciamento de Branches

Organize o desenvolvimento em diferentes linhas de trabalho:

# Lista branches locais (* indica a atual)
git branch

# Lista todas as branches (locais e remotas)
git branch -a

# Cria uma nova branch a partir da atual
git branch feature/pagamento

# Renomeia uma branch
git branch -m nome-antigo nome-novo

# Exclui uma branch local que já foi mesclada
git branch -d feature/temp

# Alterna para uma branch existente
git checkout develop

# Cria uma nova branch e alterna para ela imediatamente
git checkout -b fix/header-mobile

Inspeção e Comparação de Versões

Monitore o estado do projeto e identifique diferenças entre versões:

# Exibe o status atual dos arquivos (modificados, preparados, não rastreados)
git status

# Mostra o histórico de commits de forma simplificada
git log --oneline

# Exibe as alterações detalhadas de um commit específico
git show <hash_do_commit>

# Compara o diretório de trabalho com a Staging Area
git diff

# Compara a Staging Area com o Repositório Local (último commit)
git diff --cached

# Compara duas branches distintas
git diff main..develop

Desfazendo Alterações e Recuperação

O Git oferece diversas formas de reverter ações indesejadas:

# Restaura um arquivo para o estado do último commit (descarta mudanças locais)
git checkout -- config.json

# Remove um arquivo da área de staging, mantendo as alterações no diretório
git reset HEAD README.md

# Reverte o repositório local para um commit específico (mantém arquivos alterados)
git reset --soft <hash_do_commit>

# Reverte TUDO para um commit específico (apaga mudanças não salvas - use com cautela)
git reset --hard <hash_do_commit>

# Cria um novo commit que desfaz as alterações de um commit anterior (histórico seguro)
git revert <hash_do_commit>

Uso do Stash para Armazenamento Temporário

Útil para trocar de branch rapidamente sem precisar fazer um commit incompleto:

# Guarda as alterações atuais em uma pilha temporária
git stash

# Lista todos os itens guardados no stash
git stash list

# Recupera as alterações e as remove da pilha
git stash pop

# Aplica as alterações de um stash específico sem removê-lo
git stash apply stash@{0}

Gestão de Tags

Marque pontos importantes na história do projeto, como lançamentos de versão:

# Lista todas as tags existentes
git tag

# Cria uma tag leve na versão atual
git tag v1.0.0

# Remove uma tag local
git tag -d v1.0.0

# Envia tags para o servidor remoto
git push origin --tags

Trabalhando com .gitingore

Para evitar que arquivos irrelevantes (logs, dependências, senhas) sejam rastreados:

  1. Crie um arquivo chamado .gitignore na raiz do projeto.
  2. Adicione padrões como *.log ou node_modules/.
  3. Se um arquivo já estiver sendo rastreado e você deseja ignorá-lo: ``` git rm -r --cached . git add . git commit -m "Atualizando regras do .gitignore"

Tags: Git version-control devops git-flow software-engineering

Publicado em 6-11 01:46 por Thomas