⚠️ Atenção: Este manual é otimizado para uso em repositórios pessoais com fluxo de trabalho individual.Para trabalhos em equipe, será necessário incluir comandos adicionais de colaboração (branches, pull requests, merge, etc.).
- Configuração Inicial da Chave SSH
- Criação e Inicialização do Repositório
- Fluxo de Trabalho Básico
- Operações de Sincronização
- Clonagem de Repositórios
- Comandos Úteis Adicionais
A autenticação via SSH é mais segura e conveniente que HTTPS, pois não requer inserir senha a cada operação.
Antes de gerar uma nova chave, verifique se já existe alguma:
ls -al ~/.sshO que procurar:
id_ed25519eid_ed25519.pub(chaves Ed25519)id_rsaeid_rsa.pub(chaves RSA - formato mais antigo)
ssh-keygen -t ed25519 -C "seu_email@example.com"Explicação dos parâmetros:
-t ed25519: Define o tipo de criptografia (EdDSA - mais moderna e segura)-C "email": Adiciona um comentário identificador à chave
Durante a geração:
- Enter file in which to save the key: Pressione
Enterpara usar o local padrão (~/.ssh/id_ed25519) - Enter passphrase: Pressione
Enterpara sem senha OU digite uma senha para maior segurança - Enter same passphrase again: Confirme a senha (ou pressione
Enternovamente)
O agente SSH gerencia suas chaves em memória:
eval "$(ssh-agent -s)"Resultado esperado: Agent pid 12345 (o número será diferente)
ssh-add ~/.ssh/id_ed25519Nota: Este comando adiciona a chave privada ao agente. A chave privada NUNCA deve ser compartilhada.
cat ~/.ssh/id_ed25519.pubImportante: Copie TODO o conteúdo exibido, incluindo:
- O tipo de chave (
ssh-ed25519) - A sequência de caracteres
- Seu email no final
- Acesse: github.com/settings/keys
- Clique em "New SSH key"
- Title: Dê um nome identificável (ex: "Notebook Pessoal - Debian")
- Key: Cole a chave pública copiada
- Clique em "Add SSH key"
ssh -T git@github.comResultado esperado:
Hi SEU_USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
Se aparecer aviso sobre autenticidade do host:
- Digite
yese pressioneEnter - Isso adiciona o GitHub aos hosts conhecidos
- Acesse github.com/new
- Defina:
- Repository name: Nome do projeto
- Description: (Opcional) Descrição breve
- Public/Private: Visibilidade do repositório
- Initialize: NÃO marque nenhuma opção se for seguir os comandos abaixo
Use quando criar o repositório vazio no GitHub:
# Criar arquivo README inicial
echo "# Nome do Projeto" >> README.md
echo "Descrição do projeto..." >> README.md
# Inicializar repositório Git local
git init
# Adicionar README à staging area
git add README.md
# Fazer primeiro commit
git commit -m "first commit"
# Renomear branch para main (padrão atual)
git branch -M main
# Conectar ao repositório remoto
git remote add origin git@github.com:SEU_USUARIO/nome-repositorio.git
# Enviar para o GitHub
git push -u origin mainExplicação detalhada:
git init: Cria um novo repositório Git na pasta atualgit branch -M main: Renomeia a branch de "master" para "main"git remote add origin: Adiciona o GitHub como repositório remotogit push -u origin main: Envia commits e define "main" como branch padrão
Use quando já tem arquivos locais e criou o repositório vazio no GitHub:
# Inicializar Git (se ainda não foi feito)
git init
# Adicionar todos os arquivos existentes
git add .
# Fazer commit inicial
git commit -m "Importação inicial do projeto"
# Renomear branch para main
git branch -M main
# Conectar ao repositório remoto
git remote add origin git@github.com:SEU_USUARIO/nome-repositorio.git
# Enviar para o GitHub
git push -u origin mainSe você marcou "Add a README file" ao criar o repositório:
# Clonar o repositório
git clone git@github.com:SEU_USUARIO/nome-repositorio.git
# Entrar na pasta
cd nome-repositorio
# Começar a trabalhar...git statusMostra:
- Arquivos modificados (modified)
- Arquivos novos não rastreados (untracked)
- Arquivos na staging area (staged)
- Branch atual
# Adicionar arquivo específico
git add nome-do-arquivo.txt
# Adicionar vários arquivos específicos
git add arquivo1.txt arquivo2.js
# Adicionar todos os arquivos modificados e novos
git add .
# Adicionar todos os arquivos de uma extensão
git add *.py# Commit básico
git commit -m "Mensagem descritiva da alteração"
# Commit com descrição detalhada
git commit -m "Título breve" -m "Descrição mais detalhada das alterações realizadas"Boas práticas para mensagens de commit:
- Use verbos no imperativo: "Adiciona", "Corrige", "Atualiza"
- Seja específico: "Corrige bug na validação de email" > "Correções"
- Primeira linha até 50 caracteres
- Deixe uma linha em branco antes da descrição detalhada
git add anteriormente).
git commit -am "Mensagem do commit"Equivale a:
git add arquivo1 arquivo2 arquivo3 # Apenas arquivos modificados
git commit -m "Mensagem do commit"NÃO funciona com:
- Arquivos novos (untracked files)
- Arquivos deletados (precisa
git addougit rm)
# Enviar commits para o GitHub
git pushPrimeira vez (já foi feito com -u):
git push -u origin main-uou--set-upstream: Define a branch remota padrão
Após configurado, apenas:
git pushUse quando fizer alterações diretamente no GitHub (editor web):
# Baixar e mesclar alterações remotas
git pullO que acontece:
- Git busca alterações do GitHub
- Mescla automaticamente com sua versão local
- Atualiza seu diretório de trabalho
Se houver conflitos:
- Git pausará o merge
- Você precisará resolver manualmente
- Depois:
git add .egit commit
Antes de fazer pull, você pode verificar o que mudou:
# Buscar informações sem mesclar
git fetch
# Ver diferenças entre local e remoto
git diff main origin/maingit clone git@github.com:USUARIO/repositorio.gitVantagens:
- Não pede senha a cada operação
- Mais seguro
- Melhor performance
git clone https://github.com/USUARIO/repositorio.gitQuando usar:
- Quando não tem chave SSH configurada
- Para repositórios públicos que só vai ler
- Em ambientes com restrições de firewall
git clone git@github.com:USUARIO/repositorio.git nome-da-pastagit clone -b nome-da-branch git@github.com:USUARIO/repositorio.git# Ver histórico de commits
git log
# Histórico compacto (uma linha por commit)
git log --oneline
# Histórico gráfico
git log --oneline --graph --all
# Ver últimos 5 commits
git log -5
# Ver alterações de cada commit
git log -p# Descartar alterações em arquivo específico (não commitado)
git checkout -- nome-arquivo.txt
# Remover arquivo da staging area (mantém alterações)
git reset HEAD nome-arquivo.txt
# Desfazer último commit (mantém alterações)
git reset --soft HEAD~1
# Desfazer último commit (descarta alterações)
git reset --hard HEAD~1--hard: Perde as alterações permanentemente!
# Remover arquivo do Git e do disco
git rm nome-arquivo.txt
# Remover arquivo apenas do Git (mantém no disco)
git rm --cached nome-arquivo.txt
# Renomear/mover arquivo
git mv arquivo-antigo.txt arquivo-novo.txt# Ver repositórios remotos configurados
git remote -v
# Ver configurações do Git
git config --list
# Ver branch atual
git branch
# Ver todas as branches (locais e remotas)
git branch -aCrie um arquivo .gitignore na raiz do projeto para ignorar arquivos:
# Exemplo de .gitignore
node_modules/
*.log
.env
.vscode/
__pycache__/
*.pycAdicionar e commitar:
git add .gitignore
git commit -m "Adiciona arquivo .gitignore"# Ver URL atual
git remote -v
# Alterar URL (de HTTPS para SSH, por exemplo)
git remote set-url origin git@github.com:USUARIO/repositorio.git# 1. Começar o dia - Atualizar repositório
git pull
# 2. Fazer alterações nos arquivos...
# (editar, criar, deletar arquivos)
# 3. Verificar o que mudou
git status
# 4. Adicionar alterações
git add .
# 5. Fazer commit
git commit -m "Descrição das alterações"
# 6. Enviar para o GitHub
git push
# 7. Repetir passos 2-6 conforme necessárioSolução: Chave SSH não configurada corretamente
ssh-add ~/.ssh/id_ed25519
ssh -T git@github.comSolução: Remover e adicionar novamente
git remote remove origin
git remote add origin git@github.com:USUARIO/repositorio.gitSolução: Resolver manualmente
git pull # Vai mostrar arquivos em conflito
# Edite os arquivos e resolva conflitos
git add .
git commit -m "Resolve conflitos"
git push- Documentação Oficial Git: git-scm.com/doc
- GitHub Docs: docs.github.com
- Git Cheat Sheet: education.github.com/git-cheat-sheet-education.pdf
Última atualização: 29 de Dezembro 2025