Generator Conventional Commit
Zbuduj spójny komunikat feat, fix lub breaking change.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Szczegóły
Conventional Commits używa formatu typ(zakres): opis. Fix oznacza patch, feat — minor, a zmiana łamiąca — major. Stosuj wybrany limit i tryb rozkazujący.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator Conventional Commit — czytelna wiadomość zgodna ze standardem
Generator Conventional Commit układa wiadomość commita w przewidywalnym formacie typ(zakres): opis. Wybierasz rodzaj zmiany, opcjonalny zakres i krótki opis, a następnie możesz dodać rozwinięcie, informację BREAKING CHANGE oraz odwołania do zgłoszeń. Wynik nadaje się do wklejenia w Git i do przetwarzania przez narzędzia budujące changelog lub wersję wydania.
Dlaczego format wiadomości ma znaczenie
Historia repozytorium jest dokumentacją decyzji technicznych. Gdy każdy autor zapisuje zmianę inaczej, trudno odróżnić nową funkcję od naprawy, znaleźć obszar aplikacji albo przygotować listę zmian dla użytkowników. Conventional Commits wprowadza mały, łatwy do zapamiętania kontrakt. Pierwszy token określa intencję, zakres wskazuje moduł, a opis mówi, co zmienia commit. Taki zapis jest czytelny podczas code review i jednocześnie możliwy do jednoznacznego przetworzenia przez automat.
Budowa nagłówka, treści i stopki
feat(auth): dodaj logowanie kluczem dostępu
Obsłuż uwierzytelnianie w aplikacji mobilnej.
BREAKING CHANGE: usuń poprzedni format tokenu
Refs: #123
Nagłówek powinien być krótki i samodzielny. Typ jest obowiązkowy, zakres pozostaje opcjonalny, a wykrzyknik po zakresie sygnalizuje zmianę niekompatybilną. Po pustej linii można dodać treść wyjaśniającą powód i skutki. Stopki służą między innymi do opisania breaking change oraz połączenia commita ze zgłoszeniem. Generator pilnuje, aby dane nagłówka i numer zgłoszenia nie mogły wstrzyknąć dodatkowej linii do gotowej wiadomości.
Typy feat, fix i pozostałe kategorie
| Typ | Kiedy go użyć | Typowy wpływ na wydanie |
|---|---|---|
feat | nowa funkcja widoczna dla użytkownika lub klienta API | wersja minor |
fix | naprawa nieprawidłowego zachowania | wersja patch |
docs | zmiana dokumentacji bez zmiany działania kodu | zwykle bez wydania |
refactor | przebudowa kodu bez nowej funkcji i bez naprawy | zależnie od polityki |
perf | zmiana poprawiająca wydajność | zwykle patch |
test | dodanie lub korekta testów | zwykle bez wydania |
build, ci | system budowania albo automatyzacja pipeline | zależnie od projektu |
chore | prace utrzymaniowe, które nie pasują do innych typów | zwykle bez wydania |
revert | wycofanie wcześniejszej zmiany | zależnie od wycofanego commita |
Zakres, opis i limit długości
Zakres, nazywany scope, powinien być stabilną nazwą części systemu, na przykład auth, api, checkout lub docs. Nie wpisuj w nim numeru zadania ani pełnego zdania. Opis najlepiej formułować w trybie rozkazującym: „dodaj walidację”, „napraw sortowanie”, „usuń przestarzałą opcję”. Generator liczy cały nagłówek, czyli także typ, nawiasy i zakres. Przekroczenie wybranego limitu nie usuwa wyniku, lecz jest wyraźnie sygnalizowane, aby autor mógł świadomie skrócić tekst.
BREAKING CHANGE i wersjonowanie semantyczne
Zmiana łamiąca kompatybilność wymaga uwagi niezależnie od tego, czy jej typem jest feat, fix czy refactor. Zaznaczenie opcji dodaje ! w nagłówku i stopkę BREAKING CHANGE:. W stopce opisz, co przestaje działać oraz jak przeprowadzić migrację. Narzędzia zgodne z SemVer mogą mapować fix na patch, feat na minor, a breaking change na major. Sam komunikat nie publikuje jednak wersji — reguły wydawania określa konfiguracja projektu i pipeline, który można przygotować w generatorze GitLab CI.
Od wiadomości do changeloga i automatyzacji
Spójne commity pozwalają filtrować historię, grupować zmiany według typu i generować release notes bez ręcznego przepisywania listy zadań. Pomagają też egzekwować politykę w hooku commit-msg. Jeśli repozytorium dopiero powstaje, warto równolegle przygotować zasady ignorowania plików w generatorze .gitignore. W projektach z automatycznymi testami komunikaty typu ci i build łatwo połączysz z przepływem utworzonym przez generator GitHub Actions.
Jak zbudować dobrą wiadomość krok po kroku
- Wybierz typ na podstawie skutku zmiany, a nie nazwy zadania lub gałęzi.
- Dodaj krótki zakres, jeśli pomaga wskazać moduł; pomiń go, gdy commit dotyczy całego projektu.
- Napisz jednowierszowy opis w trybie rozkazującym, bez kropki na końcu.
- W treści wyjaśnij powód, ograniczenia i decyzje, których nie widać z diffu.
- Zaznacz breaking change tylko wtedy, gdy odbiorca musi zmienić integrację, dane lub konfigurację.
- Dodaj numery zgłoszeń oddzielone przecinkami, sprawdź długość i skopiuj gotową wiadomość.
fix nie powinien ukrywać nowej funkcji, a brak stopki breaking change nie czyni niekompatybilnej zmiany bezpieczną. Zespół powinien uzgodnić znaczenie typów i stosować je konsekwentnie.Najczęściej zadawane pytania
Czy zakres jest obowiązkowy?
Nie. Scope warto dodać, gdy nazwa modułu ułatwia zrozumienie historii, na przykład feat(auth). Przy zmianie przekrojowej czytelniejszy może być nagłówek bez nawiasów.
Czy opis commita musi być po angielsku?
Standard nie narzuca języka. Najważniejsza jest jedna reguła dla całego zespołu. Tokeny techniczne, takie jak feat, fix i BREAKING CHANGE, pozostają zgodne ze specyfikacją.
Jak oznaczyć zmianę niekompatybilną?
Dodaj wykrzyknik po typie lub zakresie i stopkę BREAKING CHANGE: z konkretną instrukcją migracji. Generator może utworzyć oba elementy jednocześnie.
Czy długi nagłówek jest błędem?
Nie zawsze, ale utrudnia skanowanie logu i bywa obcinany w interfejsach. Ustawiony limit jest kontrolą jakości: wynik nadal pozostaje dostępny, a wskaźnik pokazuje przekroczenie.
Jak powiązać commit z kilkoma zgłoszeniami?
Wpisz numery oddzielone przecinkami, na przykład 123, #456. Generator utworzy osobną linię Refs: #... dla każdego poprawnego numeru.