Перейти к содержимому

Генератор сообщений Git Commit

Генерирует сообщения в формате Conventional Commits с типом, областью и описанием.

Об этом инструменте

Генератор сообщений коммитов Git помогает разработчикам писать четкие и стандартизированные сообщения коммитов в соответствии со спецификацией Conventional Commits. Этот формат делает логи контроля версий легко читаемыми, позволяет автоматизировать управление версиями и генерацию журналов изменений, а также улучшает командное сотрудничество благодаря единообразной структуре сообщений во всем проекте. Независимо от того, работаете ли вы в одиночку или в большой команде, правильно отформатированные коммиты необходимы для удобства поддержки и отслеживаемости.

Для использования инструмента выберите тип коммита (feat, fix, docs, style, refactor, test, chore или perf), при необходимости добавьте область применения для уточнения того, какая часть кодовой базы изменилась, напишите краткое описание изменения и при необходимости включите основной текст с дополнительными деталями или информацией в колонтитуле, например ссылки на проблемы. Инструмент мгновенно генерирует правильно отформатированное сообщение Conventional Commit, которое вы можете скопировать и вставить непосредственно в вашу систему контроля версий.

Разработчики, инженеры DevOps и сопровождающие проектов с открытым исходным кодом получают наибольшие преимущества от внедрения Conventional Commits, так как это обеспечивает автоматизацию семантического управления версиями и профессиональное создание журналов изменений. Хотя некоторые проекты могут предпочитать пользовательские стили коммитов, формат Conventional Commits широко поддерживается инструментами CI/CD, GitHub Actions и платформами семантического выпуска, что делает его идеальным для современных рабочих процессов разработки программного обеспечения.

Часто задаваемые вопросы

Реализация кода

# Generate Conventional Commit messages programmatically
# No external library needed — plain string formatting

from dataclasses import dataclass, field
from typing import Optional

@dataclass
class CommitMessage:
    type: str                          # feat | fix | docs | style | refactor | test | chore ...
    description: str
    scope: Optional[str] = None
    body: Optional[str] = None
    breaking_change: Optional[str] = None
    footer: list[str] = field(default_factory=list)

    def render(self) -> str:
        # Header: type(scope)!: description
        scope_str = f"({self.scope})" if self.scope else ""
        bang      = "!" if self.breaking_change else ""
        header    = f"{self.type}{scope_str}{bang}: {self.description}"

        parts = [header]
        if self.body:
            parts.append("")
            parts.append(self.body)

        trailers = list(self.footer)
        if self.breaking_change:
            trailers.append(f"BREAKING CHANGE: {self.breaking_change}")
        if trailers:
            parts.append("")
            parts.extend(trailers)

        return "\n".join(parts)


# Example usage
msg = CommitMessage(
    type="feat",
    scope="auth",
    description="add OAuth2 login support",
    body="Implements Google and GitHub OAuth2 providers.\nUpdates the session schema.",
    breaking_change="remove legacy /login endpoint",
    footer=["Reviewed-by: Alice <alice@example.com>"],
)
print(msg.render())
# feat(auth)!: add OAuth2 login support
#
# Implements Google and GitHub OAuth2 providers.
# Updates the session schema.
#
# Reviewed-by: Alice <alice@example.com>
# BREAKING CHANGE: remove legacy /login endpoint

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.