DevPath · Aprenda a programar ESPTEN

Git e trabalho em equipe

Versões, releases e monorepos

Tags e releases

Uma tag é um rótulo fixo que marca um commit específico, normalmente para apontar uma versão publicada. Diferente de uma branch, ela não se move.

git tag v1.4.0                 # tag leve no commit atual
git tag -a v1.4.0 -m "Release 1.4.0"   # tag anotada (com autor e mensagem)
git push origin v1.4.0         # publica a tag (push não envia tags por padrão)
git push origin --tags         # publica todas as tags

Uma release é a publicação formal de uma versão: a tag + notas de mudanças (changelog) + artefatos (binários, pacotes). No GitHub é criada a partir de uma tag.

Versionamento semântico (SemVer)

SemVer atribui a cada versão três números: MAJOR.MINOR.PATCH (p. ex. 2.4.1). Cada um comunica o tipo de mudança:

Mudança Exemplo Salto
Quebra a API Você remove um parâmetro obrigatório MAJOR
Adiciona sem quebrar Novo método opcional MINOR
Arruma um bug Você corrige um cálculo PATCH
~1.2.3  -> permite PATCH:  >=1.2.3 <1.3.0
^1.2.3  -> permite MINOR:  >=1.2.3 <2.0.0   (padrão no npm)

Encaixa com Conventional Commits: fix: -> PATCH, feat: -> MINOR, feat!: / BREAKING CHANGE -> MAJOR.

Monorepo vs polyrepo

meu-monorepo/
├── package.json        # workspaces
├── apps/
│   ├── web/
│   └── api/
└── packages/
    ├── ui/
    └── utils/

Não há "vencedor" universal: o monorepo brilha quando os pacotes estão muito acoplados e são versionados/implantados juntos; o polyrepo, quando são independentes e gerenciados por equipes separadas.

Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← Trabalho em equipe: PRs, review e convençõesVer o módulo →