Configuração Inicial

git --version

Verifica a versão do Git instalada.

git config --global user.name "Seu Nome"

Define o nome do usuário para todos os repositórios.

git config --global user.email "seu@email.com"

Define o e-mail do usuário.

git config --list

Lista todas as configurações ativas do Git.

Repositório

git init

Inicializa um novo repositório Git no diretório atual.

git clone https://github.com/user/repo.git

Clona um repositório remoto para a máquina local.

Status e Histórico

git status

Mostra o status dos arquivos (modificados, staged, untracked).

git log

Exibe o histórico completo de commits.

git log --oneline --graph --all

Histórico resumido e visual com grafo de branches.

git blame arquivo.ts

Mostra quem alterou cada linha de um arquivo.

git bisect start
git bisect bad
git bisect good <commit-hash>

Busca binária para encontrar o commit que introduziu um bug.

Adicionar Arquivos

git add arquivo.txt

Adiciona um arquivo específico ao staging.

git add .

Adiciona todos os arquivos modificados ao staging.

git add -p

Adiciona alterações de forma interativa (por hunks).

git restore arquivo.txt

Descarta alterações não adicionadas ao staging.

Commit

git commit -m "feat: adicionar autenticação JWT"

Cria um commit com mensagem descritiva.

git commit --amend -m "nova mensagem"

Edita o último commit (antes do push).

git commit --allow-empty -m "trigger deploy"

Cria um commit vazio, útil para disparar pipelines de CI/CD.

Branches

git branch

Lista todas as branches locais.

git branch -a

Lista branches locais e remotas.

git branch nova-branch

Cria uma nova branch.

git checkout nova-branch

Troca para a branch especificada.

git checkout -b feature/nova-funcionalidade

Cria e troca para uma nova branch em um único comando.

git switch main

Troca de branch usando a forma moderna.

git branch -d feature/concluida

Remove uma branch local já mergeada.

git push origin --delete feature/concluida

Remove uma branch do repositório remoto.

Merge e Rebase

git merge feature/login

Mescla uma branch na branch atual.

git rebase main

Reaplica os commits da branch atual sobre outra branch, reescrevendo o histórico.

git rebase -i HEAD~3

Rebase interativo para reorganizar, squash ou reword dos últimos 3 commits.

git add .
git rebase --continue

Resolve conflitos durante o rebase e continua o processo.

Repositório Remoto

git remote -v

Lista os repositórios remotos configurados.

git remote add origin https://github.com/user/repo.git

Adiciona um repositório remoto.

git push origin main

Envia commits locais para o repositório remoto.

git push -u origin main

Envia e define o upstream (tracking) da branch.

git pull

Busca e mescla as alterações do remoto na branch local.

git pull --rebase

Busca alterações e reaplica os commits locais sobre elas, evitando merge commits desnecessários.

git fetch

Busca alterações do remoto sem mesclar automaticamente.

Stash

git stash

Guarda alterações temporariamente sem fazer commit.

git stash push -m "WIP: refatoração do service"

Guarda alterações com uma mensagem descritiva.

git stash list

Lista todos os stashes salvos.

git stash pop

Aplica o último stash e o remove da lista.

git stash apply stash@{0}

Aplica um stash específico sem removê-lo da lista.

Desfazer Alterações

git reset --soft HEAD~1

Desfaz o último commit mantendo os arquivos no staging.

git reset HEAD~1

Desfaz o último commit e o staging, mantendo as alterações nos arquivos.

git reset --hard HEAD~1

Remove o último commit e todas as alterações. Cuidado: essa ação é irreversível.

git revert <commit-hash>

Cria um novo commit que reverte as alterações de um commit específico, preservando o histórico.

Tags

git tag

Lista todas as tags do repositório.

git tag v1.0.0

Cria uma tag leve na HEAD atual.

git tag -a v1.0.0 -m "Release versão 1.0.0"

Cria uma tag anotada com mensagem.

git push origin v1.0.0

Envia uma tag específica para o repositório remoto.

git push origin --tags

Envia todas as tags locais para o remoto.

SSH (GitHub)

ssh-keygen -t ed25519 -C "email@exemplo.com"

Gera um par de chaves SSH usando o algoritmo Ed25519.

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Inicia o agente SSH e adiciona a chave privada.

ssh -T git@github.com

Testa a conexão SSH com o GitHub.

Boas Práticas

  • Faça commits pequenos e descritivos seguindo Conventional Commits (feat:, fix:, chore:, refactor:)
  • Use branches para cada feature ou correção
  • Evite --force em branches compartilhadas
  • Prefira git pull --rebase para manter o histórico linear
  • Versione o .gitignore desde o início do projeto
  • Revise alterações com git diff antes de commitar
  • Use tags para marcar releases e versões estáveis