image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
William Silva
William Silva18/12/2024 08:51
Compartilhe
Microsoft Certification Challenge #3 DP-100Recomendados para vocΓͺMicrosoft Certification Challenge #3 DP-100

πŸ“ Guia Definitivo: Crie Commits Claro e Organizados com o Conventional Commit Format e Simplifique Seu Workflow

  • #GitHub
  • #Git

Manter commits claros e consistentes é essencial para um bom desenvolvimento colaborativo. Este guia detalhado cobre o formato Angular Commit Message Format, incluindo as seçáes Header, Body e Footer.

πŸ› οΈ Header

O header contΓ©m trΓͺs elementos principais:

  • type: O tipo de mudanΓ§a no cΓ³digo (obrigatΓ³rio).
  • scope: O escopo que o commit afeta (opcional, mas recomendado).
  • short summary: Resumo da mudanΓ§a em no mΓ‘ximo 72 caracteres (obrigatΓ³rio).

Formato do Header

<type>(<scope>): <short summary>

Valores Aceitos para type

  • build: Alteraçáes que afetam o sistema de build ou dependΓͺncias externas.
  • ci: Alteraçáes nos scripts ou configuraçáes de CI (Integração ContΓ­nua).
  • docs: MudanΓ§as na documentação apenas.
  • feat: Introdução de uma nova funcionalidade.
  • fix: Correção de um bug.
  • perf: Melhorias de desempenho.
  • refactor: Alteração de cΓ³digo que nΓ£o corrige bugs nem adiciona funcionalidades.
  • test: Adição ou modificação de testes.

Exemplos de scope

  • animations,bazel,benchpress,common,compiler,compiler-cli,core,elements,forms,http,language-service,
  • localize,platform-browser,platform-browser-dynamic,platform-server,router,service-worker,upgrade,zone.js,
  • packaging,changelog,docs-infra,migrations,ngcc,ve,devtools

Exemplo de Header

feat(forms): add custom validation feature

πŸ“– Body

O body Γ© uma explicação detalhada do commit. Ele deve responder ao "por quΓͺ" e "como" a mudanΓ§a foi feita.

Regras para o Body

  • Comece com um verbo no presente para explicar o impacto.
  • Use frases curtas e claras.
  • Limite cada linha a 72 caracteres para facilitar a leitura.

Exemplo de Body

Adds the ability to include custom validators in reactive forms.

This commit introduces a new API for adding validators directly to
form controls. The feature supports synchronous and asynchronous
validators.

🚩 Footer

O footer contém informaçáes adicionais, como:

  • Breaking Changes: Declara mudanΓ§as que quebram compatibilidade.
  • Closes/Fixes: Relaciona o commit com issues no GitHub.

Formato do Footer

BREAKING CHANGE: <description>

Closes #<issue-number>

Exemplo de Footer

BREAKING CHANGE: This changes the default validation strategy
in reactive forms, which might break existing applications.

Closes #1234

πŸ”§ TΓ©cnicas para Criar Commits Perfeitos

Utilizar um Template PadrΓ£o

Configure templates de mensagem de commit no Git com instruçáes claras para Header, Body e Footer.

# Configuração do template global
 git config --global commit.template ~/.git-commit-template.txt

Crie o arquivo .git-commit-template.txt com o formato do Angular Commit:

<type>(<scope>): <short summary>

# Body
<detailed explanation of the commit>

# Footer
<breaking change or references>

Automação com Hooks do Git

Use hooks como prepare-commit-msg para pré-preencher mensagens com base em convençáes:

  • Husky: Integra hooks em projetos com configuraçáes fΓ‘ceis.
  • Combine com ferramentas como Commitizen para garantir que os commits sigam um padrΓ£o.

Documentação para a Equipe

Crie um guia interno ou adote convençáes claras como o Angular Commit Format, para que toda a equipe siga o mesmo padrão.

πŸ› οΈ Ferramentas para Ajudar com Commits

1. Commitizen

  • Ferramenta CLI que guia o processo de commit no formato correto.
  • Garante conformidade com padrΓ΅es como o Angular Commit Format.

Instalação:

npm install -g commitizen

Uso:

git cz

Plugins ΓΊteis:

  • cz-conventional-changelog: Segue o padrΓ£o do Angular.

2. AI Assistants

  • GitHub Copilot: Pode sugerir mensagens de commit baseadas em mudanΓ§as feitas no cΓ³digo.
  • Use comentΓ‘rios no cΓ³digo para explicar mudanΓ§as; o Copilot sugere commits baseados nisso.
  • OpenAI API ou ChatGPT: Gere mensagens de commit detalhadas com base nos diffs do cΓ³digo.
  • Integração com ferramentas de linha de comando ou editores como VS Code.

3. Linting de Commits

  • CommitLint: Valida automaticamente mensagens de commit para verificar se seguem o formato correto.
  • Integração com Husky para rodar automaticamente nos commits:
npm install --save-dev @commitlint/{config-conventional,cli}
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

4. Change Detection & Templates

  • Semantic Release: Automatiza o versionamento e changelogs baseados em mensagens de commit.
  • Útil para grandes projetos onde commits seguem padrΓ΅es rΓ­gidos.
  • GitMoji: Usa emojis para identificar visualmente o tipo de commit.
  • CLI para adicionar emojis diretamente no commit:
npm install -g gitmoji-cli
gitmoji -c

5. Editor Plugins

  • VS Code Extensions:
  • Git Commit Template: Ajuda a preencher mensagens de commit com templates padrΓ£o.
  • Conventional Commits: Oferece suporte interativo para gerar mensagens no formato Angular.
  • JetBrains IntelliJ:
  • Suporte para convençáes de commits com configuração personalizada.
  • Plugins como GitToolBox fornecem histΓ³rico e sugestΓ΅es.

6. Automação com IA

  • GPT Commit Message Generator:
  • Ferramenta CLI que usa GPT para gerar mensagens de commit:
  • OpenCommit: Analisa git diff e cria mensagens contextuais.

Instalação:

npm install -g opencommit
opencommit
  • Pode ser configurado com sua prΓ³pria chave API do OpenAI.

πŸš€ Fluxo Recomendado

  1. Escreva o cΓ³digo.
  2. Use git add para preparar os arquivos.
  3. Execute:
git cz

ou:

opencommit
  1. Valide com CommitLint antes de finalizar:
npm run lint
  1. Finalize com git commit ou git push.

Com essas ferramentas e tΓ©cnicas, Γ© possΓ­vel garantir que seus commits sejam bem formatados, consistentes e informativos!

βœ… Exemplo Completo

feat(forms): add custom validation feature

Adds the ability to include custom validators in reactive forms.

This commit introduces a new API for adding validators directly to
form controls. The feature supports synchronous and asynchronous
validators.

BREAKING CHANGE: This changes the default validation strategy
in reactive forms, which might break existing applications.

Closes #1234

🧾 Checklist para um Commit Perfeito

πŸ”Ή Header

  • EstΓ‘ no formato <type>(<scope>): <short summary>?
  • O resumo estΓ‘ claro, direto e no presente?

πŸ”Ή Body

  • Explicou o que foi alterado, por quΓͺ e como?
  • Cada linha tem no mΓ‘ximo 72 caracteres?

πŸ”Ή Footer

  • Indicou Breaking Changes ou issues relacionadas?

Seguindo este guia, vocΓͺ manterΓ‘ seus commits consistentes, claros e fΓ‘ceis de rastrear! 🌟

Compartilhe
Recomendados para vocΓͺ
Microsoft AI for Tech - GitHub Copilot
XP Inc. - Cloud com InteligΓͺncia Artificial
Microsoft AI for Tech - Azure Databricks
ComentΓ‘rios (1)
Lilian Santos
Lilian Santos - 18/12/2024 10:40

Só as orientaçáes sobre a estrutura e o checklist ao final jÑ fazem desse artigo muito muito informativo! Principalmente pra quem estÑ começando e as dicas de ferramentas e automação deixam o tópico ainda mais avançado.

Valeu por compartilhar esse conhecimento! Depois dos cursos que fiz na DIO sobre Git e GitHub comecei a ir treinando os commits mais convencionais, trabalhando melhor o header e o body... E uma satisfação fazer referΓͺncia a uma issue solucionada, alΓ©m de treinar o inglΓͺs rsrs

Uma ferramenta legal pra visualizar branchs e commits Γ© o gitk.

Particularmente, gostei muito do curso com OtÑvio Reis Perkles, muito didÑtico e muitas informaçáes de forma descomplicada.

Γ“timo assunto para compartilhar experiΓͺncia. ParabΓ©ns pelo artigo! βœ¨πŸš€

Recomendados para vocΓͺMicrosoft Certification Challenge #3 DP-100