Git e Github — Guia Prático para Iniciantes

Nesse post, iremos abordar os seguintes temas:

  • Como conectar via SSH no Github
  • Como enviar um repositório local para o remoto
  • Comandos úteis
  • Workflow com Git e Github

O que é Git e por que usar?

Git é um sistema de controle de versão distribuído criado por Linus Torvalds em 2005. Ele permite que você rastreie as alterações no seu código ao longo do tempo, volte para versões anteriores e colabore com outras pessoas sem sobrescrever o trabalho umas das outras.

Github é uma plataforma online que hospeda repositórios Git, facilitando a colaboração, o backup e o compartilhamento de projetos.

💡 Pense no Git como uma “máquina do tempo” para o seu código, e no Github como a “nuvem” onde você guarda essas versões.


Instalação

Linux (Debian/Ubuntu)

sudo apt update && sudo apt install git -y

macOS

brew install git

Windows

Baixe o instalador em git-scm.com.

Após instalar, pode fazer toda a configuração pelo terminal do git bash, comece configurando seu nome e e-mail:

git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"

Como conectar via SSH no Github

A autenticação via SSH é mais segura e prática do que usar usuário e senha. Com ela, você não precisa digitar credenciais a cada push.

1. Gerar a chave SSH

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

Pressione Enter para aceitar o caminho padrão (~/.ssh/id_ed25519). Opcionalmente, defina uma senha para a chave.

2. Adicionar a chave ao ssh-agent

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

3. Copiar a chave pública

cat ~/.ssh/id_ed25519.pub

Copie o conteúdo exibido no terminal.

4. Adicionar a chave no Github

  1. Acesse Github → Settings → SSH and GPG keys
  2. Clique em New SSH key
  3. Cole a chave pública e salve

5. Testar a conexão

ssh -T git@github.com

Se tudo estiver correto, você verá:

Hi seu-usuario! You've successfully authenticated, but GitHub does not provide shell access.

Como enviar um repositório local para o remoto

Partindo do zero (novo projeto)

# 1. Crie a pasta e entre nela
mkdir meu-projeto && cd meu-projeto

# 2. Inicie o repositório Git
git init

# 3. Crie um arquivo inicial
echo "# Meu Projeto" > README.md

# 4. Adicione os arquivos ao stage
git add .

# 5. Faça o primeiro commit
git commit -m "feat: primeiro commit"

# 6. Renomeie a branch principal (boa prática)
git branch -M main

# 7. Conecte ao repositório remoto (crie o repo no Github antes)
git remote add origin git@github.com:seu-usuario/meu-projeto.git

# 8. Envie para o Github
git push -u origin main

⚠️ Lembre-se de criar o repositório vazio no Github antes do passo 7. Não marque a opção de adicionar README para evitar conflitos.

Clonando um repositório existente

git clone git@github.com:usuario/repositorio.git
cd repositorio

Comandos Úteis

Informação e status

ComandoO que faz
git statusMostra o estado atual dos arquivos
git logExibe o histórico de commits
git log --onelineHistórico resumido em uma linha por commit
git diffMostra as diferenças ainda não staged
git diff --stagedMostra as diferenças já no stage

Stage e commits

git add arquivo.txt        # Adiciona um arquivo específico
git add .                  # Adiciona todos os arquivos modificados
git commit -m "mensagem"   # Cria um commit
git commit --amend         # Edita o último commit (mensagem ou arquivos)

Branches

git branch                      # Lista as branches locais
git branch minha-feature        # Cria uma nova branch
git checkout minha-feature      # Muda para a branch
git checkout -b minha-feature   # Cria e já muda para a branch
git switch -c minha-feature     # Alternativa moderna ao checkout -b
git merge minha-feature         # Faz merge da branch na atual
git branch -d minha-feature     # Deleta a branch local

Remoto

git push origin main            # Envia commits para o remoto
git pull                        # Baixa e integra mudanças do remoto
git fetch                       # Baixa mudanças sem integrar
git remote -v                   # Lista os remotos configurados

Desfazendo mudanças

git restore arquivo.txt         # Descarta mudanças não staged
git restore --staged arquivo.txt # Remove do stage sem perder mudanças
git revert HEAD                 # Cria um commit que desfaz o último
git reset --soft HEAD~1         # Desfaz o último commit, mantém stage
git reset --hard HEAD~1         # ⚠️ Desfaz tudo — use com cuidado!

Stash (guardar mudanças temporariamente)

git stash           # Salva mudanças temporariamente
git stash pop       # Recupera a última mudança salva
git stash list      # Lista todos os stashes
git stash drop      # Remove o stash mais recente

Workflow com Git e Github

Um bom workflow evita conflitos e mantém o histórico organizado. O mais comum para times é o Feature Branch Workflow:

Passo a passo

main ──────────────────────────────────●─────────
                                      /
feature/login ──●──●──●──────────────●

1. Sempre parta da main atualizada

git checkout main
git pull

2. Crie uma branch para sua feature ou correção

git checkout -b feature/nome-da-feature

3. Desenvolva e faça commits pequenos e descritivos

git add .
git commit -m "feat: adiciona tela de login"

4. Envie sua branch para o remoto

git push origin feature/nome-da-feature

5. Abra um Pull Request no Github

No Github, clique em “Compare & pull request”, descreva as mudanças e solicite revisão.

6. Após aprovação, faça o merge e delete a branch

git checkout main
git merge feature/nome-da-feature
git branch -d feature/nome-da-feature
git push origin --delete feature/nome-da-feature

Boas práticas para mensagens de commit

Use o padrão Conventional Commits:

feat: adiciona funcionalidade de login
fix: corrige bug no formulário de cadastro
docs: atualiza README com instruções de instalação
style: formata código sem alterar lógica
refactor: reorganiza estrutura de pastas
test: adiciona testes para o módulo de auth
chore: atualiza dependências

Resumo rápido

# Fluxo básico do dia a dia
git pull                          # Atualiza o repositório local
git checkout -b minha-feature     # Cria e entra na branch
# ... faz as alterações ...
git add .                         # Stage das mudanças
git commit -m "feat: minha feature"  # Commit
git push origin minha-feature     # Envia para o Github
# Abre Pull Request no Github

Com esses conceitos e comandos você já consegue trabalhar de forma profissional com Git e Github no dia a dia. Bons commits! 🚀