# Conventional Commits

Adres: https://softwaredictionary.org/tr/terimler/conventional-commits
Kategori: Sürüm Kontrolü
Son güncelleme: 2026-10-03
Türkçe karşılığı: commit mesajı kuralı
Okunuşu: kınvenşınıl kımits

Kısaca: Conventional Commits, feat: add search gibi yapılandırılmış commit mesajları için bir şartnamedir; araçlar değişiklik günlüğü üretip sürümü otomatik seçer.

## Conventional Commits nedir?

Bir conventional commit mesajı bir tür, isteğe bağlı bir kapsam (scope) ve kısa bir açıklamayla başlar: `feat(auth): add passkey login` ya da `fix: prevent double payment`. En yaygın türler yeni özellikler için `feat` ve hata düzeltmeleri için `fix`'tir; kullanıcıları doğrudan etkilemeyen değişiklikler için de `docs`, `refactor`, `test`, `perf`, `build`, `ci` ve `chore` gibi başkaları vardır.

Kırıcı değişiklikler türden sonra bir ünlem işaretiyle, `feat!: drop support for Node 18` örneğindeki gibi, ya da bir `BREAKING CHANGE:` alt satırıyla işaretlenir. Her türün bir anlamı olduğu için geçmiş doğrudan anlamsal sürümlemeye karşılık gelir: düzeltmeler bir patch sürümünü, özellikler bir minor sürümü, kırıcı değişiklikler de bir major sürümü tetikler.

2019'da yayımlanan 1.0.0 sürümlü şartname, Angular projesinin commit yönergelerinden doğdu. Araçlar onun üzerine kurulur: commitlint mesajları bir Git hook'unda ya da CI'da kontrol eder; semantic-release ya da release-please de geçmişi okuyarak sürümleri yükseltir, değişiklik günlüğünü yazar ve sürümleri elle iş yapmadan yayımlar.

Sık yapılan bir yanlış, bu kuralın yalnızca bürokrasi olduğunu düşünmektir. Tutarlı bir biçim geçmişi taramayı ve aramayı kolaylaştırır, ama en iyi commit'ler küçük ve odaklı olduğunda işe yarar. Bir özelliği, bir düzeltmeyi ve bir refactoring'i karıştıran tek bir commit dürüstçe tek bir türle etiketlenemez.

## Önemli noktalar

- Conventional Commits, yapılandırılmış bir commit mesajı biçimi tanımlar.
- Mesajlar tür(kapsam): açıklama biçimindedir, feat: ya da fix: gibi.
- Bir ! ya da bir BREAKING CHANGE alt satırı kırıcı değişiklikleri işaretler.
- Türler anlamsal sürümlemeye karşılık gelir: fix patch, feat minor, kırıcı değişiklik major'dır.
- commitlint ve semantic-release gibi araçlar kontrolleri ve sürümleri otomatikleştirir.

## Örnek: Conventional Commits biçiminde commit mesajları

```text
feat(search): add fuzzy matching for typos
fix(cart): prevent negative totals with stacked coupons
docs: explain how to run the e2e tests
refactor(api): extract pagination helper
perf(images): serve AVIF when the browser supports it

feat(auth)!: require passkeys for admin accounts

BREAKING CHANGE: password-only login is no longer accepted for admins.
```

## Sık sorulan sorular

**Conventional Commits türleri nelerdir?**

Şartname feat ve fix'i zorunlu tutar. Angular kuralından alınan yaygın ek türler docs, style, refactor, perf, test, build, ci, chore ve revert'tür.

**Conventional Commits anlamsal sürümlemeyle nasıl ilişkilidir?**

Bir fix commit'i bir patch sürümüne, bir feat commit'i bir minor sürüme, kırıcı değişiklik olarak işaretlenmiş her commit de bir major sürüme karşılık gelir; böylece araçlar bir sonraki sürümü geçmişten hesaplayabilir.

**Conventional Commits'i nasıl zorunlu kılarım?**

Biçime uymayan mesajları reddetmek için commitlint'i, örneğin Husky ile, bir commit-msg Git hook'unda ve CI'da kullanın. Squash merge iş akışlarında bunun yerine pull request başlığı da kontrol edilebilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
