---
nome: Projeto no GitHub
descricao: criar o repositório, subir o projeto e abrir pull request pelo gh
quando: github, repositório, repositorio, repo, subir pro github, sobe pro github, pull request, pr, gh, versionar, push, clonar
autor: PrimoCode
---
Tudo pelo `gh` (GitHub CLI) e pelo `git`, rodando no terminal do projeto.

**Antes de tudo:** `gh auth status`. Sem login, diga à pessoa para rodar
`gh auth login` e pare — NUNCA peça token ou senha no chat.

**Projeto novo no GitHub:**
1. Se não houver `.git`: `git init -b main`.
2. `.gitignore` antes do primeiro commit (node_modules, dist, build, .env,
   .DS_Store, __pycache__, .venv). Confira com `git status` que nenhum segredo
   ou pasta pesada vai junto.
3. README curto: o que é, como rodar.
4. `git add -A` e `git commit -m "<o que o projeto é>"`.
5. `gh repo create <nome-do-projeto> --private --source . --push` (privado
   por padrão; público só se a pessoa pedir). Diga o link do repositório.

**Mudança num repositório que já existe (pull request):**
1. `git status` e `git pull` primeiro. Branch nova com nome que diz a
   mudança: `git switch -c feat/<assunto>`.
2. Rode o que o projeto roda (teste, lint, build) antes de commitar.
3. Commit com a mensagem dizendo o que MUDA; `git push -u origin <branch>`.
4. `gh pr create --fill` (ou `--title` e `--body` dizendo o que e por quê).
   Diga o link do PR.

**Segredo:** `.env` só existe na máquina. Nunca crie, edite ou renomeie
`.env` pelo site do GitHub (renomear `.env.example` para `.env` lá já vazou
chave em repositório público). O `.env.example` leva só os nomes, sem valor.
Antes do push: `git ls-files | grep '\.env$'` tem de vir vazio. Vazou? Troque a
chave na hora; apagar o arquivo não basta, ela fica no histórico.

**Nunca** faça `push --force` em `main`, nunca apague branch dos outros, nunca
commite `.env`. Conflito: resolva lendo os dois lados, não escolhendo um às
cegas.
