Clonagem com Branch Específico
Para clonar apenas uma branch determinada, como a desenvolvimento:
git clone --branch desenvolvimento https://github.com/usuario/repositorio.git
Verificação de Estado do Repositório
O comando git status apresenta o estado atual entre o diretório de trabalho e a área de staging. Ele revela quais modificações foram preparadas para commit, quais permanecem pendentes e quais arquivos ainda não são rastreados pelo Git. Informações sobre histórico de commits requerem o uso de git log.
Adição de Arquivos ao Staging
Para incluir arquivos na área de preparação:
# Arquivos individuais
git add [arquivo1] [arquivo2]
# Diretório completo com subdiretórios
git add [diretorio]
# Todos os arquivos do diretório atual
git add .
Registro de Alterações
Para consolidar as mudanças da área de staging no repositório local:
git commit -m "descrição das alterações"
Envio para Repositório Remoto
O git push propaga as atualizações da branch local para o servidor remoto. Sua estrutura segue o padrão:
git push <remoto> <branch-local>:<branch-remota>
Exemplo prático enviando para a branch desenvolvimento:
git push origin desenvolvimento
Consulta de Histórico
Para visualizar o histórico de commits:
git log
Para um registro mais abrangente incluindo operações de reflog:
git reflog
Reversão de Commits
Para retornar a uma versão anterior específica:
git reset --hard <hash-do-commit>
Quando necessário desfazer o último commit mantendo as alterações em staging:
git reset --soft HEAD~1
Para descartar todas as modificações locais e commits não enviados:
git reset --hard HEAD
Sincronização com Repositório Remoto
O git pull recupera atualizações do repositório remoto e as integra à branch atual. Por padrão, executa git fetch seguido de git merge FETCH_HEAD.
Sintaxe completa:
git pull [opções] [<repositório> [<referência>…]]
Exemplo trazendo a branch recurso-x do remoto upstream para mesclar com a branch local atual:
git pull upstream recurso-x
Quando a branch remota possui o mesmo nome da local, pode-se simplificar:
git pull upstream
Se existe apenas um remoto configurado:
git pull
Para aplicar as mudanças via rebase em vez de merge:
git pull --rebase <remoto> <branch-remota>:<branch-local>
Gerenciamento de Branches
Listar todas as branches (locais e remotas):
git branch -a
Mudar para uma branch existente:
git checkout feature-nova
Criar e mudar para nova branch (certifique-se de commitar as alterações da branch atual antes):
git checkout -b release-2024
Preservação Temporária de Alterações
Quando há mudanças não commitadas impedindo a troca de branch, use o stash:
# Arquivar alterações temporariamente
git stash
# Trocar de branch
git checkout outra-branch
# Recuperar alterações arquivadas
git stash pop
Diferença entre Fetch e Pull
O git fetch baixa as atualizações do remoto sem aplicá-las automaticamente, permitindo revisão antes da integração:
# Baixar atualizações da branch principal
git fetch origin principal
# Comparar diferenças
git log -p principal..origin/principal
# Aplicar mesclagem manualmente
git merge origin/principal
Alternativa com branch temporária:
git fetch origin principal:temp
git diff temp
git merge temp
O git pull combina essas operações em único comando, executando fetch e merge sequencialmente:
git pull origin principal
A abordagem com fetch oferece maior controle, possibilitando inspecionar as mudanças antes de decidir pela mesclagem.
Configuração de Relacionamento entre Branches
O Git estabelece automaticamente vínculos de rastreamento durante o clone. Para configurar manualmente:
git branch --set-upstream principal origin/versao-estavel
Isso define que a branch local principal acompanha a remota origin/versao-estavel.