Como usar Git sem GitHub

Como usar Git sem GitHub
Como usar Git sem GitHubComo usar Git sem GitHub

Quando você ouve "Git", provavelmente pensa logo em GitHub.
Mas a verdade é que o Git não precisa de internet, servidor ou conta online para funcionar.

Ele é um sistema de controle de versão totalmente local, criado para que você possa versionar, organizar e recuperar seu código com segurança — sem depender de ninguém.

Neste post, você vai aprender como usar o Git de forma 100% independente:

  • Criar e editar commits
  • Restaurar arquivos e desfazer erros
  • Organizar o histórico com --amend e squash
  • E até compartilhar seu repositório pela internet, sem GitHub, usando apenas seu terminal e o Ngrok.

Iniciando um repositório local

Você pode iniciar qualquer pasta com Git:

git init

Isso cria uma pasta .git oculta com todo o histórico e estrutura do seu projeto. Tudo acontece localmente.

Criando commits

# Crie um arquivo:
echo "conteúdo" > arquivo.txt
# Adicione ao staging:
git add arquivo.txt
# Faça o commit:
git commit -m "Adiciona arquivo.txt"

Repita isso sempre que quiser registrar uma nova versão.

Apagando arquivos com Git

Para apagar um arquivo e registrar a remoção no Git:

git rm arquivo.txt
git commit -m "Remove arquivo.txt"

# Se quiser só remover localmente (sem Git):
rm arquivo.txt

# Mas o Git verá isso como alteração — você pode confirmar com:
git status

Restaurando arquivos deletados ou modificados

# Restaurar arquivo modificado:
git restore arquivo.txt

# Restaurar arquivo deletado:
git restore arquivo.txt

# Restaurar tudo do último commit:
git restore .

Editando o último commit (--amend)

Cometeu um erro na mensagem ou esqueceu um arquivo?

O git commit --amend é ideal quando você ainda não fez push para o repositório remoto e deseja corrigir ou atualizar o último commit. Aqui estão os principais casos de uso corretos:

Casos comuns para usar --amend:

Corrigir a mensagem do commit
Você cometeu um typo ou quer melhorar a descrição:

git commit --amend -m "Corrige bug de layout na home"

Adicionar arquivos esquecidos
Você esqueceu de adicionar algum arquivo antes de fazer o commit:

git add arquivo-esquecido.ts &&
git commit --amend --no-edit

(com --no-edit a mensagem do commit anterior é mantida)

Remover arquivos que não deveriam estar no commit

# desfaz o último commit, mantendo as alterações no staging
git reset HEAD~       
git add somente-o-que-deve-ficar
git commit --amend

Refinar código e manter o histórico limpo
Ideal para quando você está trabalhando localmente e quer que o histórico do seu branch fique com um commit final mais “bonito” e completo.

⚠️ Use apenas se ainda não tiver compartilhado o commit (no caso de uso remoto).

Revertendo alterações

# Desfazer um git add:
git restore --staged arquivo.txt

# Desfazer o último commit (mas manter as alterações):
git reset --soft HEAD~1

# Desfazer o último commit e também remover as alterações:
git reset --hard HEAD~1

Verificando o histórico

# Visualize o histórico de commits:
git log

# Mais compacto:
git log --oneline

# Ver alterações em um commit específico:
git show <hash-do-commit>

Squash: junte seus commits antes de subir sua branch

Durante o desenvolvimento de uma funcionalidade, é comum fazermos vários commits pequenos:

  • feat: cria botão
  • fix: corrige espaçamento
  • refactor: renomeia função

Antes de finalizar seu trabalho, você pode juntar esses commits em um só para deixar o histórico mais limpo. Isso se chama squash.

Quando usar squash?

  • Quando sua branch está cheia de commits pequenos, testes ou ajustes repetitivos.
  • Antes de abrir um pull request.
  • Nunca na branch main, master ou em branches compartilhadas com outras pessoas.
⚠️ Squash deve ser usado apenas na sua branch local, antes de enviá-la ao repositório remoto.

Como fazer squash com rebase -i

  1. Veja quantos commits quer juntar (exemplo: últimos 3):
git log --oneline
  1. Inicie o rebase interativo:
git rebase -i HEAD~3
  1. Vai abrir algo assim no editor:
pick a1b2c3 feat: cria botão
pick d4e5f6 fix: corrige espaçamento
pick g7h8i9 refactor: renomeia função
  1. Mude os pick abaixo do primeiro para squash (ou s):
pick a1b2c3 feat: cria botão
squash d4e5f6 fix: corrige espaçamento
squash g7h8i9 refactor: renomeia função
  1. Salve o arquivo. O Git vai pedir a mensagem do commit final. Edite como quiser e salve novamente.

Você terá 1 commit no lugar de 3, com o histórico limpo e organizado. Ideal para revisão e merge.

🌍 Compartilhando seu repositório Git pela internet com ngrok

Quer que outra pessoa clone seu repositório direto do seu computador, sem usar GitHub ou serviços externos?

Você pode fazer isso com apenas dois comandos, usando o Python e o ngrok.

🤔 O que é o Ngrok?

O Ngrok é uma ferramenta que cria uma URL pública temporária para acessar qualquer servidor local — como seu repositório Git, site em desenvolvimento ou API.

Com ele, você consegue compartilhar o que está rodando no seu computador com qualquer pessoa via internet, de forma rápida e segura.

Passo 1: Crie um repositório bare (modo servidor)

mkdir projeto.git
cd projeto.git
git init --bare

Passo 2: Exponha o repositório com Python

python -m http.server 8000

Em outro terminal:

ngrok http 8000

# O Ngrok vai gerar algo como:
https://1234abcd.ngrok.io
# Basta rodar:
git clone https://1234abcd.ngrok.io/projeto.git

A pessoa já tem uma cópia do seu repositório — sem GitHub, sem conta, sem complicação.

⚠️ Importante: git push não funciona

Embora seja possível clonar e navegar no repositório via URL pública com ngrok, esse método não permite que outra pessoa envie (push) alterações de volta.

Isso acontece porque:

  • O servidor python -m http.server é somente de leitura
  • Ele não entende os comandos de escrita do Git (como push via HTTP)
Ou seja: esse compartilhamento serve apenas para leitura — ideal para mostrar seu código, entregar um projeto ou estudar Git.
Para permitir push, é necessário usar SSH ou montar um servidor Git de verdade (como com Apache/Nginx + Smart HTTP ou Gitea).