Design — Domínio Controle de Versão

Spec de design do domínio 03-Dominios/Tecnologia/Controle de Versão. Decidido em 2026-07-31, na mesma conversa que registrou as fronteiras de Infraestrutura (Tier 2). Revisado no mesmo dia após a análise de 4 repositórios de material próprio do autor — a revisão inverteu a ordem do domínio (ver Progressão).


Por que domínio próprio (e não um galho de Infraestrutura)

  1. Quebra a espinha da estante de Infra. O index.md de Infraestrutura define seu escopo como “o que sustenta as aplicações depois que elas saem da máquina do dev — containers, orquestração, proxy, SO, provedor. Git é sobre o histórico do código, antes de rodar. O GitHub CLI.md estar lá é acidente de estante-gaveta.
  2. Volume de domínio, não de galho. ~34 notas em 3 fases — escala de Acessibilidade (21) ou System Design (27).
  3. É a infraestrutura do ofício. git log/blame/bisect/pickaxe é a ferramenta primária de Arqueologia de Software.

Camada: Tecnologia. Nome: Controle de Versão (tool-neutral no topo, comporta Git + GitHub + o contraste com SVN/Jujutsu).


Lente e progressão

Lente: o repositório como fonte de verdade (o contrato de trabalho do time) e como testemunha (quem mudou o quê, por quê, e quando quebrou).

Progressão (revisada 2026-07-31): do operacional para o modelo, em 7 níveis.

O desenho original começava pelo modelo de objetos (SG1 “O modelo do Git”) e só depois operava. Foi invertido por decisão do autor, com dois motivos que se somam:

  1. Este material vai ser compartilhado com colegas. O domínio não é só nota pessoal — é o que o autor manda pra quem está começando. Um domínio que abre com blob/tree/DAG perde exatamente esse leitor no primeiro parágrafo.
  2. É como o próprio autor já ensina. Os 4 workshops dele (2016–2023) abrem pelo problema e pela operação, e só sobem ao modelo depois que a pessoa já commitou — o curso-git-github literalmente chama o bloco de internals de “Tomo 6 — Subindo de nível”, depois de 5 tomos operacionais. O desenho original contrariava a pedagogia que o material dele já provou.

O antídoto contra “virar mais um tutorial” não é começar difícil — é subir. Cada nível fecha com uma ponte explícita pro seguinte, e o nível 3 recontextualiza tudo que os níveis 0-2 ensinaram como receita:

N0 Sobrevivência → N1 Fluxo diário → N2 Colaborar → N3 O modelo por baixo
                                                         ↓
N6 O repo como testemunha ← N5 Repositórios reais ← N4 Quando dá errado

Mapa de fases do vault: N0-N1 = Iniciado · N2-N3 = Adepto · N4-N6 = Magus.


Material próprio do autor (analisado em 2026-07-31)

Quatro repositórios de workshops/cursos que o autor ministrou e compartilha com colegas. Aproveitamento alto — não como texto a copiar, mas como estrutura pedagógica já validada em sala, mais diagramas e narrativas próprias.

RepoAnoFormatoO que é
workshop-git2016reveal.js, 9 tomosO mais completo tecnicamente. VCS local/centralizado/distribuído · snapshots×diferenças · checksum · os 3 estados · config (editor, difftool, help) · essencial (init/clone/status/gitignore/diff/commit/rm/mv/log) · desfazendo coisas (amend/reset/checkout) · remotos múltiplos · tagging (leve×anotada) · branching em 9 diagramas sequenciais (branch é ponteiro → HEAD → checkout move HEAD → commit avança) · merge×rebase com diagramas · GitHub
curso-git-github2017reveal.js, 6 tomosCurso com GitKraken (GUI). Intro VCS com narrativa histórica (“O dia em que rasguei o CD!”, Torvalds/BitKeeper) · workflow básico · workflow remoto · GitHub · GitKraken · “Tomo 6 — Subindo de nível”: SHA-1, “Git só adiciona dados”, snapshots×diferenças, log, diff, conflitos, .gitignore, remote, pendrive como servidor Git
escrita-sem-medo-com-git-e-github2021reveal.js, 13 slides mdGit pra não-programadores (acadêmicos: artigo, dissertação/tese, trabalho em grupo). “Trabalhar sem controle de versão é como trabalhar sem EPI” · “todos mantemos uma linha do tempo” (mas nomes de arquivo não formam uma) · “o Git é uma máquina do tempo… com acesso a múltiplas linhas temporais” · o que é VCS pelas 4 perguntas (o quê/quem/quando/por quê) · seção “Limitações”: o que o Git NÃO faz (comparar Word/Excel, imagens, binários)
aprendendo-git-e-github2023README (124 linhas)Mapa curado de recursos em PT-BR, com badges de idioma e progressão explícita: início rápido → cursos em vídeo → referência rápida → oficial → resolvendo problemas → extras → livros → ferramentas → hospedagem → avançado

O que aproveitar, item a item

Ativo do materialVai pra
Abertura pelo problema: tcc-final-v3-AGORA-VAI.docx, “nomes de arquivo não formam uma linha do tempo”nota 01 — é a melhor porta de entrada nível 0 que existe
”Trabalhar sem VCS é como trabalhar sem EPI” + as 4 perguntas (o quê/quem/quando/por quê)nota 01
”O que o Git NÃO faz” (binários, Word/Excel, imagens)nota 01 — seção de honestidade que quase nenhum tutorial escreve
VCS local → centralizado → distribuído (3 diagramas)nota 01
Narrativa histórica: “O dia em que rasguei o CD”, Torvalds/BitKeeper, “Torvalds fica full pistola”nota 01 — abertura-problema com voz própria
Config inicial: identidade, editor, difftool, git helpnota 02
Ciclo de vida do arquivo + os 3 estadosnota 03
Regras de .gitignorenota 06
Máquina do tempo com múltiplas linhas temporais (metáfora de branch)nota 08 — a metáfora que faz branch “clicar” antes do modelo
Sequência de 9 diagramas de branching (branch é ponteiro → HEAD → checkout → commit avança → volta pro main)nota 19 — é literalmente a nota “refs, HEAD e branch como ponteiro”; redesenhar em Mermaid
”Tudo tem checksum SHA-1” + “Git só adiciona dados” + snapshots×diferençasnotas 17, 18 e 23 — o núcleo do nível 3
Diagramas merge × rebasenota 21
Múltiplos remotes (“SIM! Com o git, podemos ter vários remotos!“)nota 11
Tags leves × anotadasnota 14
Pendrive como servidor Gitnota 11 — exercício que prova que “remote” é só outro repositório, sem mágica
Mapa de recursos PT-BR com badges de idiomaBiblioteca do domínio (já incorporado)

Datado — usar com ressalva

  • GitKraken/TortoiseGit/SourceTree dominam o curso-git-github e o workshop-git. Hoje o eixo do vault é CLI + Lazygit. As GUIs entram como menção de uma linha na nota 02, não como fio condutor.
  • master em todo o material de 2016-17 → escrever main, com nota de rodapé sobre a mudança de 2020.
  • git checkout pra trocar de branch e descartar arquivo → ensinar switch/restore (Git 2.23+) como forma primária, com checkout explicado como o comando antigo que faz as duas coisas (e por isso confunde).
  • git-flight-rules, GitHub Guides e o link do GirlsTechTalkClub: o último está 404 (verificado 2026-07-31) — sai do mapa.

Roster — 7 sub-galhos + capstone (34 notas)

N0 · SG1 — Sobrevivência (Iniciado, 5 notas)

Meta do nível: ao fim, a pessoa versiona um projeto sozinha e não perde trabalho. Zero teoria que não seja necessária pra isso.

Público do N0 — decisão de 2026-07-31

O N0 é escrito para público geral: o estudante ou acadêmico que precisa parar de perder arquivos (monografia, dissertação, tese, artigo, trabalho em grupo). Não pressupõe programação. O dev iniciante é servido pelo mesmo texto — o fluxo é idêntico —, mas os exemplos primários são de documentos, não de código, e o vocabulário de programação só entra quando é inevitável (e aí explicado).

Consequências: exemplos com .docx/.tex/.csv; a linha de comando é apresentada como ferramenta neutra, não como pressuposto; toda menção a “projeto” vale igualmente pra software e pra texto acadêmico; herda o registro do workshop escrita-sem-medo-com-git-e-github.

A partir do N1 o público estreita gradualmente pro perfil dev, e do N3 em diante é assumidamente técnico.

#NotaÂngulo
01O problema que o Git resolvetcc-final-v3-AGORA-VAI.docx; as 4 perguntas; VCS local→centralizado→distribuído; nascimento do Git; o que o Git NÃO faz
02Instalar e configuraridentidade, editor, git help; menção a GUIs e ao Lazygit
03Seu primeiro repositórioinit, status, add, commit, log — o ciclo de vida do arquivo e os 3 estados como receita
04Desfazer sem susto (nível 0)restore, restore --staged, commit --amend; a regra “antes de compartilhar, é livre”
05GitHub — colocar o repo na nuvemconta, remote add, push, clone, README; clone ≠ checkout

N1 · SG2 — O fluxo diário (Iniciado/Adepto, 6 notas)

Meta: operar Git num projeto real, sozinho ou em dupla.

#NotaÂngulo
06Ignorar arquivos — .gitignore e suas regrasordem das regras, negação, o que nunca commitar
07Ler o histórico — log e diffformatos de log, --graph, ler um diff sem medo
08Branches na prática — a máquina do tempo com linhas paralelasswitch -c, mesclar, deletar; metáfora antes do modelo
09Conflito — por que acontece e como resolver sem pânicoconflito não é erro; anatomia dos marcadores; mergetool
10Guardar trabalho pela metade — stash e worktreesworktree como alternativa superior ao stash
11Sincronizar com o time — fetch, pull, pushremote-tracking branch; múltiplos remotes; pendrive como servidor; --force-with-lease

N2 · SG3 — Colaborar (Adepto, 5 notas)

#NotaÂngulo
12Pull requests e a cultura de code reviewtamanho de PR, review como ensino, o que automatizar
13Estratégias de branching — trunk-based, GitHub Flow, GitFlowqual o legado usa e por quê; custo de cada uma
14Anatomia de um bom commit — Conventional Commits, tags e semvercommit como comunicação; tag leve × anotada; changelog
15GitHub como plataforma — issues, projects, rulesets, CODEOWNERSbranch protection, ambientes
16gh CLI e automação do fluxoabsorve Infraestrutura/GitHub CLI.md

N3 · SG4 — O modelo por baixo (Adepto/Magus, 5 notas)

O ponto de virada. Recontextualiza como mecanismo tudo que os níveis 0-2 ensinaram como receita.

#NotaÂngulo
17Tudo tem hash — o modelo de objetosblob, tree, commit, tag; cat-file; conteúdo endereçado
18Commit é snapshot, não diff — o DAGpor que o histórico é um grafo; o diff é calculado, não guardado
19Refs, HEAD e branch como ponteiro de 41 bytesa sequência de diagramas do workshop-git, em Mermaid; detached HEAD deixa de assustar
20O index por dentroo que add realmente faz; por que a área de stage existe
21Merge e rebase por dentro — three-way e replayancestral comum; por que o conflito é inevitável; fast-forward

N4 · SG5 — Quando dá errado (Magus, 5 notas)

#NotaÂngulo
22A árvore de decisão do desfazerreset (soft/mixed/hard) × restore × revert × checkout; história publicada × local
23reflog“o Git só adiciona dados”recuperar commit perdido, branch deletada, reset --hard; o GC e a janela real
24Reescrever história com segurançarebase -i, cherry-pick, a regra de ouro, --force-with-lease
25Segredos no histórico — quando vazafilter-repo, rotação obrigatória, secret scanning, prevenção
26Configurar o Git a seu favoraliases, rerere, hooks, .gitattributes, autosetuprebase

N5 · SG6 — Repositórios reais (Magus, 4 notas)

#NotaÂngulo
27Monorepo × polyrepo — sparse-checkout, partial clone, LFSquando o repo não cabe mais no clone completo
28Submódulos e subtreespor que submódulo dói; quando ainda assim é a resposta
29Cirurgia de repositóriomigração SVN→Git, split, merge de repos, reescrita em massa
30Git no CI/CD e GitOpscontrato repo↔pipeline; shallow clone, tags, ambientes

N6 · SG7 — O repositório como testemunha (Magus, 3 notas)

A lente do consultor de legado. É o nível que justifica o domínio existir.

#NotaÂngulo
31Ler história de verdade — blame, pickaxe (-S/-G), --followachar quando uma linha nasceu e por quê
32bisect — encontrar o commit que quebroumanual e automatizado (bisect run)
33Forense de repositório — hotspots, coautoria, siloso que a frequência de mudança revela sobre o design

Capstone

#NotaÂngulo
34Capstone — assumir um repositório desconhecidoprimeiras 4 horas num repo alheio: mapear história, achar donos, medir hotspots, decidir o fluxo. Costura N6 + N2 + N3

Prática delegada a simuladores

O risco declarado é virar mais um tutorial de Git. A defesa é separar modelo de repetição: a nota entrega o modelo, o simulador entrega a repetição.

Convenção obrigatória: toda nota de N0 a N4 fecha com callout [!tip] Pratique apontando pro nível/exercício específico — nunca pra home do site. Ex.: nota 19 (refs/HEAD) → nível de relative refs do Learn Git Branching; nota 23 (reflog) → kata de commit perdido do git-katas.

Acervo em Biblioteca de Controle de Versão, com bloco PT-BR incorporado do aprendendo-git-e-github.


Fronteiras — o que NÃO entra aqui

AssuntoCasa canônicaComo este domínio trata
CI/CD como disciplina de entregaOperaçãonota 30 cobre só o contrato repo↔pipeline
GitOps e IaCOperação/2 - Entrega e release/05callout na 30
git hooks no ecossistema JS (husky, lint-staged)Tooling e Build (16)nota 26 cobre hooks como mecanismo do Git
Lazygit, delta, TUIsTerminalfica no Terminal; nota 02 linka
Bare repo pra dotfilesTerminal/Dotfiles/06callout na 27
git-crypt, age, sopsTerminal/Dotfiles/07nota 25 trata do vazamento, não da ferramenta
Supply chain de dependênciasTooling e Build/24callout na 25
Arqueologia de software (o ofício)ArqueologiaN6 é o instrumento; a Arqueologia é o método

Material do vault a consumir

ArquivoDestino
Tecnologia/Ferramentas/Versionamento.md (9.8K)sementes das notas 13, 14, 22; vira tronco podado ou é excluído
Tecnologia/Infraestrutura/GitHub CLI.md (45K)semente da nota 16; Infra fica com callout

Ordem de construção

Sequencial na ordem dos níveis (N0 → N6 → capstone), com validação a cada bloco. Diferente do desenho original, aqui a ordem de construção é a ordem de leitura: como o material vai ser compartilhado, cada nível precisa ser publicável e útil sozinho, antes do próximo existir.


Veja também