Ekip Workflow'u
Giriş — Yalnız Değilsin
Git'i tek başına kullanmak ile bir ekiple kullanmak arasındaki fark, tek başına piyano çalmak ile bir orkestrada çalmak arasındaki fark gibidir. Tek başınayken istediğin nota'yı istediğin zaman çalabilirsin — kimse sana karışmaz. Ama bir orkestrada herkesin aynı partitura'dan çalması, aynı tempoda ilerlemesi ve birbirini dinlemesi gerekir. Aksi halde ortaya müzik değil, gürültü çıkar.
Profesyonel yazılım geliştirme de tam olarak böyledir. Bir startup'ta 3 kişilik bir ekip veya büyük bir şirkette 50 kişilik bir organizasyon — Git'i ekip olarak kullanmanın kendine has kuralları, gelenekleri ve "görgü kuralları" vardır. Bu derste, bir ekibin Git ile nasıl uyumlu çalışabileceğini, branch isimlendirmeden commit mesajlarına, PR süreçlerinden günlük workflow'lara kadar her şeyi ele alacağız.
Neden Workflow Gerekli?
Diyelim ki bir evde 5 kişi yaşıyorsunuz ve buzdolabı paylaşıyorsunuz. Herkes istediği yere istediği şeyi koyarsa, üç gün içinde buzdolabı kaosa döner — biri diğerinin yoğurdunu yer, süt dökülür, sebzeler çürür. Ama "alt raf ortak, ortalar kişisel, üst raf atıştırmalık" gibi basit bir kural koyarsanız, herkes rahat eder.
Bir yazılım ekibinde de durum aynıdır:
Kimse hangi branch'te çalışacağını bilemez
Commit mesajları anlamsız olur ("fix", "asdf", "wip")
PR'lar reviewsız merge edilir
Production'da bug çıkınca "kim yaptı bunu?" sorusu cevapsız kalır
İşte workflow, bu kaosu düzene çeviren sosyal sözleşmedir.
Branch Naming Convention — İsimlendirme Sanatı
Neden Önemli?
Bir ekipte 20 branch olduğunu düşünün. Eğer branch isimleri test, deneme, fix2, ahmet-branch gibi anlaşılmaz isimlerden oluşuyorsa, kimse hangi branch'in ne iş yaptığını anlayamaz. Ama feature/user-authentication, bugfix/login-timeout, hotfix/payment-crash gibi isimler görürseniz, hiçbir açıklama okumadan bile ne olduğunu anlarsınız.
Standart Prefix'ler
Endüstri standardı haline gelmiş prefix (önek) yapısı şöyledir:
feature/ → Yeni özellik
bugfix/ → Bug düzeltme (geliştirme sürecinde)
hotfix/ → Acil production fix
release/ → Release hazırlığı
chore/ → Teknik bakım, tooling, config
docs/ → Dökümantasyon
refactor/ → Kod iyileştirme (davranış değişmez)
test/ → Test ekleme/düzeltmeNaming Kuralları
İyi bir branch ismi şu kurallara uyar:
# ✅ İyi branch isimleri
feature/user-authentication
bugfix/cart-total-calculation
hotfix/payment-gateway-timeout
release/v2.3.0
chore/upgrade-react-19
docs/api-endpoint-reference
# ❌ Kötü branch isimleri
new-feature
fix
test123
ahmet
my-branchAltın kurallar:
Küçük harf kullan (case sensitivity sorunlarından kaçınmak için)
Kelimeler arası tire (-) kullan (alt çizgi veya boşluk değil)
Kısa ama açıklayıcı ol (max 3-4 kelime)
Ticket/issue numarası ekle (varsa)
Ticket Numarası ile Kullanım
Çoğu profesyonel ekip, Jira, Linear veya GitHub Issues kullanır. Branch isminin başına veya sonuna ticket numarası eklemek, her branch'in hangi iş kalemine ait olduğunu netleştirir:
# Jira ticket ile
feature/PROJ-1234-user-authentication
bugfix/PROJ-5678-cart-calculation
# GitHub issue ile
feature/42-user-authentication
bugfix/108-login-timeout
# Branch oluşturma
git checkout -b feature/PROJ-1234-user-authentication💡 İpucu: Birçok proje yönetim aracı, commit mesajlarındaki ve branch isimlerindeki ticket numaralarını otomatik olarak algılar ve ilgili kart/issue ile ilişkilendirir. Jira'da
PROJ-1234yazdığınızda, o issue'nun altında ilgili branch ve commit'leri görebilirsiniz.
Otomatik Branch İsimlendirme
GitHub, issue sayfasında "Create a branch" butonu sunar. Bu, doğru formatta branch ismi otomatik oluşturur:
# GitHub'ın otomatik oluşturduğu format
# Issue #42: "Add user authentication"
42-add-user-authentication
# Bunu kendi convention'ınıza göre düzenleyebilirsiniz
feature/42-add-user-authenticationCommit Convention — Anlamlı Commit Mesajları
Sorun: Anlamsız Commit Geçmişi
Şu git log'a bir bakın:
$ git log --oneline
a3f2c1d fix
b7e4a2f updated
c9d1b3e wip
d2f5c4a changes
e8a7d6b bug
f1c3e5d stuffBu commit geçmişinden hiçbir şey anlaşılmıyor. Bir hafta sonra siz bile neyi neden değiştirdiğinizi hatırlayamazsınız. Şimdi buna karşılık:
$ git log --oneline
a3f2c1d feat: add user registration form
b7e4a2f fix: resolve cart total rounding error
c9d1b3e docs: update API authentication guide
d2f5c4a refactor: extract payment logic to service
e8a7d6b test: add unit tests for user validation
f1c3e5d chore: upgrade dependencies to latest versionsBu çok daha okunaklı, değil mi? İşte bunu mümkün kılan şey Conventional Commits standardıdır.
Conventional Commits Formatı
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]Type (Tip) — Zorunlu
feat: → Yeni özellik (MINOR versiyon artışı trigger'lar)
fix: → Bug düzeltme (PATCH versiyon artışı trigger'lar)
docs: → Dökümantasyon değişikliği
style: → Kod formatı (boşluk, noktalı virgül — davranış değişmez)
refactor: → Kod iyileştirme (ne feat ne fix)
test: → Test ekleme veya düzeltme
chore: → Build, CI, tooling değişiklikleri
perf: → Performans iyileştirme
ci: → CI/CD pipeline değişiklikleri
build: → Build system veya bağımlılık değişiklikleri
revert: → Önceki commit'i geri almaScope (Kapsam) — Opsiyonel
Değişikliğin hangi modülü/bileşeni etkilediğini belirtir:
feat(auth): add OAuth2 support
fix(cart): resolve quantity update bug
docs(readme): add installation section
refactor(api): simplify error handling middlewareDescription (Açıklama) — Zorunlu
Emir kipi (imperative mood) kullanılır: "add" (added değil), "fix" (fixed değil)
Küçük harfle başlar
Sonunda nokta yok
Max 72 karakter
# ✅ Doğru
feat(auth): add two-factor authentication
fix(payment): handle timeout for slow connections
# ❌ Yanlış
feat(auth): Added two-factor authentication.
fix: Fixed the bug
feat: New feature that I worked on for a very long time and it does many things at onceBody (Gövde) — Opsiyonel
Daha fazla açıklama gerektiğinde, boş satırdan sonra gövde eklenir:
git commit -m "fix(auth): handle expired JWT tokens gracefully
Previously, expired tokens caused a 500 error and the user
saw a blank page. Now the user is redirected to the login
page with a friendly message.
Closes #234"Breaking Changes
API'da geriye dönük uyumsuz değişiklik yaptığınızda:
# Yöntem 1: ! işareti ile
feat(api)!: change authentication header format
# Yöntem 2: Footer'da
feat(api): change authentication header format
BREAKING CHANGE: Authorization header now uses Bearer scheme
instead of Token scheme. All API clients need to update.Commit Mesajı Şablonu
Ekibiniz için bir şablon oluşturabilirsiniz:
# ~/.gitmessage dosyası oluşturun
cat > ~/.gitmessage << 'EOF'
# <type>(<scope>): <description>
#
# [body]
#
# [footer]
#
# Types: feat, fix, docs, style, refactor, test, chore, perf, ci, build, revert
# Scope: auth, cart, payment, user, api, ui, db, config
# Description: imperative mood, lowercase, no period, max 72 chars
# Body: explain WHY, not WHAT (the diff shows what)
# Footer: BREAKING CHANGE, Closes #issue, Refs #issue
EOF
# Git'e şablonu tanıtın
git config --global commit.template ~/.gitmessage⚠️ Dikkat: Conventional Commits sadece bir "güzel görünsün" meselesi değildir.
semantic-releasegibi araçlar, bu commit mesajlarını otomatik olarak parse ederek versiyon numarası belirler, changelog oluşturur ve release yapar. Yani commit mesajınız aslında bir otomasyon komutudur.
Commitlint ile Zorlama
Kuralları sadece "rica" etmek yetmez — otomatize etmek gerekir:
# commitlint kurulumu
npm install -D @commitlint/cli @commitlint/config-conventional
# commitlint.config.js
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" \
> commitlint.config.js
# Husky ile pre-commit hook
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit ${1}'Artık kurala uymayan commit mesajları reddedilir:
$ git commit -m "yaptım bi şeyler"
⧗ input: yaptım bi şeyler
✖ subject may not be empty [subject-empty]
✖ type may not be empty [type-empty]
✖ Found 2 problems, 0 warningsPR (Pull Request) Etiquette — Görgü Kuralları
PR Boyutu: Küçük Tutun
Bir PR'ın en önemli özelliği boyutudur. Araştırmalar gösteriyor ki:
< 200 satır değişiklik: Review kalitesi yüksek, hızlı merge
200-400 satır: Kabul edilebilir
400+ satır: Review kalitesi düşer, bug gözden kaçar
1000+ satır: Kimse düzgün review yapamaz
PR Boyutu vs Review Kalitesi:
Kalite
▲
│ ████
│ ████████
│ ████████████
│ ████████████████
│ ████████████████████
│ ████████████████████████
└────────────────────────────► Satır sayısı
100 200 400 800 1000+💡 İpucu: Büyük bir feature geliştiriyorsanız, onu mantıksal parçalara bölün. Örneğin bir "kullanıcı kayıt sistemi" için: - PR #1: Veritabanı migration ve model - PR #2: API endpoint'leri - PR #3: Frontend formu - PR #4: Email doğrulama
>
Her PR kendi başına mantıklı, test edilebilir ve review edilebilir olmalıdır.
PR Template Oluşturma
Her PR'da neyin değiştiğini, neden değiştiğini ve nasıl test edileceğini belirtmek büyük önem taşır. Bunu otomatize etmek için PR template kullanabilirsiniz:
<!-- .github/pull_request_template.md -->
## Açıklama
<!-- Bu PR ne yapıyor? Neden gerekli? -->
## Değişiklik Türü
- [ ] 🐛 Bug fix
- [ ] ✨ Yeni özellik
- [ ] 💥 Breaking change
- [ ] 📝 Dökümantasyon
- [ ] ♻️ Refactoring
- [ ] 🧪 Test
## İlgili Issue
<!-- Closes #issue_number -->
## Test
<!-- Bu değişikliği nasıl test ettiniz? -->
- [ ] Unit testler eklendi/güncellendi
- [ ] Manuel test yapıldı
- [ ] E2E testler eklendi/güncellendi
## Ekran Görüntüsü (UI değişikliği varsa)
<!-- Öncesi/sonrası screenshot -->
## Checklist
- [ ] Kod self-review yapıldı
- [ ] Yorum eklenmesi gereken yerlere yorum eklendi
- [ ] Dökümantasyon güncellendi
- [ ] Değişiklik geriye dönük uyumluDraft PR — Erken Geri Bildirim
Bir feature'ın yarısını bitirdiniz ama genel yaklaşımınız hakkında geri bildirim almak istiyorsunuz. İşte bunun için Draft PR var:
# Önce branch'e push edin
git push origin feature/user-auth
# GitHub'da PR açarken "Create draft pull request" seçin
# veya GitHub CLI ile:
gh pr create --draft --title "feat: user authentication" \
--body "WIP - Feedback appreciated on the approach"Draft PR'ların özellikleri:
Merge edilemez (kazara merge'i önler)
Reviewer'lara "henüz bitmedim ama bakabilirsin" mesajı verir
Hazır olunca "Ready for review" butonuyla aktifleştirilir
Review Sürecinde İletişim
PR review'da iletişim tonu çok önemlidir. Kod eleştirmek kişisel algılanabilir — dikkatli olmak gerekir:
# ❌ Kötü review yorumu
"Bu kod çok kötü."
"Neden böyle yazdın?"
"Yanlış."
# ✅ İyi review yorumu
"Bu yaklaşım işe yarar ama şunu düşünür müsün: X pattern burada
daha bakımı kolay bir yapı sağlayabilir. Ne dersin?"
"Küçük bir öneri: Bu fonksiyon 50 satır olmuş.
Extract edersek test yazması da kolaylaşır."
"Soru: Bu null check burada yeterli mi? Y durumunda
hâlâ exception fırlatabilir gibi görünüyor."Profesyonel review'da kullanılan etiketler:
# Zorunlu düzeltme
🔴 [MUST] Bu security açığı oluşturur, mutlaka düzeltilmeli.
# Güçlü öneri
🟡 [SHOULD] Bu yaklaşım yerine X pattern daha uygun olur.
# Opsiyonel iyileştirme
🟢 [NIT] Ufak bir isimlendirme önerisi: getUserData → fetchUserProfile
# Soru
❓ [QUESTION] Bu timeout değeri nereden geliyor? Config'den mi almalıyız?
# Övgü (bunu unutmayın!)
🎉 [PRAISE] Bu refactoring harika olmuş, çok daha okunabilir!⚠️ Dikkat: Review'da sadece sorun bulmak yetmez. İyi yapılmış şeyleri de belirtmek, ekip moralini yükseltir ve iyi pratiklerin yaygınlaşmasını sağlar.
Günlük Ekip Workflow'u
Sabah Rutini
Güne başlarken ilk yapılacak şey, ana branch'i güncellemektir:
# 1. Ana branch'e geç
git checkout main
# 2. Remote'dan çek
git pull origin main
# 3. Çalışma branch'ine dön
git checkout feature/user-auth
# 4. Main'deki değişiklikleri al (rebase tercih edilir)
git rebase main
# Conflict varsa çöz, yoksa çalışmaya devamFeature Geliştirme Döngüsü
┌──────────────────────────────────────────────────────────────┐
│ Feature Development Cycle │
│ │
│ 1. Issue al ──► 2. Branch oluştur ──► 3. Geliştir │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ "PROJ-42" feature/42-user-auth commit, commit... │
│ │ │
│ 6. Merge ◄── 5. Review & Fix ◄── 4. PR Aç │ │
│ │ │ ▲ │ │
│ ▼ ▼ │ │ │
│ Branch sil Geri bildirim Push ──┘ │ │
│ uygula │ │
│ │ │ │
│ └──────── commit ──────────────┘ │
└──────────────────────────────────────────────────────────────┘Detaylı Adımlar
# 1. Issue'yu al ve branch oluştur
git checkout main
git pull origin main
git checkout -b feature/42-user-auth
# 2. Küçük, anlamlı commit'ler yap
# ... kod yaz ...
git add src/auth/
git commit -m "feat(auth): add login form component"
# ... daha kod yaz ...
git add src/auth/validators.ts
git commit -m "feat(auth): add email validation logic"
# ... test yaz ...
git add tests/auth/
git commit -m "test(auth): add unit tests for login"
# 3. Push et
git push -u origin feature/42-user-auth
# 4. PR oluştur (GitHub CLI ile)
gh pr create \
--title "feat(auth): add user authentication (#42)" \
--body "Closes #42" \
--reviewer teammate1,teammate2
# 5. Review geri bildirimi geldi, düzelt
git add .
git commit -m "fix(auth): address review feedback - add input sanitization"
git push
# 6. Approve aldıktan sonra merge (genelde GitHub UI'dan)
# Squash merge tercih edilirse tüm commit'ler tek commit olurİletişim Protokolü
Ekip çalışmasında Git teknik bilgisi yetmez — iletişim de önemlidir:
┌─────────────────────────────────────────────┐
│ Ekip İletişim Kuralları │
├─────────────────────────────────────────────┤
│ │
│ 🚫 Force push → Ekibi bilgilendir │
│ 🔀 Main'e merge → CI'ın geçtiğinden emin ol│
│ 💬 Review iste → Spesifik reviewer belirle │
│ ⏰ Review yap → 24 saat içinde yanıtla │
│ 🚨 Hotfix → Ekip kanalına bildir │
│ 📦 Release → Changelog paylaş │
│ │
└─────────────────────────────────────────────┘Squash, Merge, Rebase — PR Merge Stratejileri
GitHub'da bir PR'ı merge ederken üç seçenek vardır. Her birinin farklı bir kullanım senaryosu var:
1. Merge Commit (Create a merge commit)
feature: A --- B --- C
/ \
main: M ------- N ------- Merge Commit --- ...Tüm commit'ler korunur
Merge commit eklenir
Branch geçmişi tamamen görünür
Ne zaman: Detaylı geçmiş önemli olduğunda
2. Squash and Merge
feature: A --- B --- C (bu commit'ler ezilir)
↓
main: M --- N --- "feat: user auth (#42)" --- ...Tüm PR commit'leri tek commit'e sıkıştırılır
Temiz, lineer geçmiş
PR detayları commit mesajında
Ne zaman: Feature branch'lerde WIP commit'ler varsa (çoğu ekipte varsayılan)
3. Rebase and Merge
feature: A --- B --- C
↓ (rebase edilir)
main: M --- N --- A' --- B' --- C' --- ...Commit'ler main üzerine yeniden uygulanır
Merge commit yok, lineer geçmiş
Her commit korunur ama SHA değişir
Ne zaman: Her commit anlamlı ve atomik olduğunda
Ekip İçin Önerilen Strateji
Çoğu profesyonel ekip Squash and Merge kullanır çünkü:
# Feature branch'te WIP commit'ler olabilir:
abc1234 wip
def5678 fix typo
ghi9012 actually fix the thing
jkl3456 ok now it really works
# Squash merge sonrası main'de tek temiz commit:
mno7890 feat(auth): add user authentication (#42)Bu stratejiyi GitHub repository ayarlarından zorunlu kılabilirsiniz:
Repository → Settings → General → Pull Requests
☐ Allow merge commits
☑ Allow squash merging (Default)
☐ Allow rebase mergingGitHub CLI ile Workflow Otomasyonu
Modern ekip workflow'unun vazgeçilmez aracı GitHub CLI'dır:
# PR listele
gh pr list
# PR oluştur (interaktif)
gh pr create
# PR'ı review et
gh pr review 42 --approve
gh pr review 42 --request-changes --body "Lütfen X'i düzelt"
# PR merge et
gh pr merge 42 --squash --delete-branch
# Issue oluştur
gh issue create --title "Bug: Login timeout" --label "bug"
# Repo klonla
gh repo clone owner/repo
# Workflow çalıştır
gh workflow run deploy.yml
# PR checkout et (review için local'e çekmek)
gh pr checkout 42💡 İpucu:
gh pr checkout 42komutu, bir PR'ı local'inize çekmenin en hızlı yoludur. Review yaparken kodu çalıştırıp test edebilirsiniz. İnceleme bittikten sonragh pr review 42 --approveile onaylayın.
Alias'lar ile Hız Kazanma
Ekip workflow'unda sürekli tekrarlanan komutları kısaltmak zaman kazandırır:
# Sık kullanılan Git alias'ları
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all --decorate"
git config --global alias.last "log -1 HEAD"
git config --global alias.unstage "restore --staged"
# Günlük workflow alias'ları
git config --global alias.sync '!git checkout main && git pull && git checkout -'
git config --global alias.fresh '!git checkout main && git pull && git checkout -b'
git config --global alias.done '!git push -u origin HEAD && gh pr create --fill'Kullanımı:
# Yeni feature başlat
git fresh feature/new-dashboard
# ... geliştir, commit et ...
# PR'ı aç
git done
# Ana branch'e sync ol
git syncEkip Onboarding Checklist'i
Yeni bir ekip üyesi geldiğinde, Git konusunda şu adımlar izlenmelidir:
## 🚀 Git Onboarding
### İlk Gün
- [ ] Git ve GitHub CLI kurulumu
- [ ] SSH key oluşturma ve GitHub'a ekleme
- [ ] Organization'a davet
- [ ] Repo'yu klonlama
- [ ] Branch protection kurallarını anlama
- [ ] PR template'i inceleme
### İlk Hafta
- [ ] Commit convention öğrenme
- [ ] İlk PR açma (küçük bir görev)
- [ ] İlk code review yapma
- [ ] CI pipeline'ı anlama
- [ ] Ekip workflow'u dökümantasyonu okuma
### İlk Ay
- [ ] Complex PR review
- [ ] Merge conflict çözme
- [ ] Release sürecine katılma
- [ ] Hotfix süreci deneyimiGerçek Dünya Senaryosu: Bir Sprint'in Anatomisi
İki haftalık bir sprint'te tipik bir ekip Git workflow'u şöyle işler:
Sprint Başlangıcı (Pazartesi)
│
├── Dev 1: feature/42-user-profile
│ ├── Day 1-2: Geliştirme
│ ├── Day 3: PR açma, Draft
│ ├── Day 4: Review feedback, düzeltme
│ └── Day 5: Approve → Squash Merge
│
├── Dev 2: bugfix/38-cart-total
│ ├── Day 1: Geliştirme + Test
│ ├── Day 2: PR açma, Review
│ └── Day 2: Approve → Squash Merge
│
├── Dev 3: feature/45-notification-system
│ ├── Day 1-3: Geliştirme
│ │ ├── PR #1: DB migration (Day 2 merge)
│ │ ├── PR #2: API endpoints (Day 3 merge)
│ │ └── PR #3: Frontend (Day 5 merge)
│ └── Day 4-5: Review + Fix
│
├── QA: Testing on staging
│ └── Bug bulursa → bugfix branch → PR → merge
│
└── Sprint Sonu (Cuma)
├── Release branch oluştur: release/v2.4.0
├── Son testler
├── Tag: v2.4.0
└── Deploy to productionAcil Durum: Hotfix
Production'da kritik bug bulundu! Sprint ortasında acil müdahale:
# 1. Hotfix branch'i main'den oluştur
git checkout main
git pull
git checkout -b hotfix/payment-crash
# 2. Düzelt
# ... minimum değişiklik yap ...
git commit -m "fix(payment): handle null response from gateway
The payment gateway occasionally returns null instead of
an error object. Added null check to prevent crash.
Fixes #99"
# 3. Hızlı PR
git push -u origin hotfix/payment-crash
gh pr create --title "🚨 hotfix: payment crash fix" \
--label "hotfix,urgent" \
--reviewer senior-dev
# 4. Expedited review (senior dev hemen bakmalı)
# 5. Merge ve deploy
# 6. Hotfix'i develop/main'e de merge etYaygın Hatalar ve Çözümleri
1. Main Branch'e Direkt Commit
# ❌ Yanlış — main'e direkt push etmek
git checkout main
git commit -m "feat: new feature"
git push # Branch protection varsa reddedilir
# ✅ Doğru — her zaman feature branch kullan
git checkout -b feature/new-feature
git commit -m "feat: new feature"
git push -u origin feature/new-feature
# → PR aç → Review → Merge2. Büyük, Tek Seferde PR
# ❌ Yanlış — 3 haftalık işi tek PR'da göndermek
# 2000+ satır değişiklik, kimse review yapamaz
# ✅ Doğru — küçük, bağımsız PR'lar
# Her PR 100-300 satır arası
# Her PR kendi başına mantıklı ve test edilebilir3. Güncelliğini Yitirmiş Branch
# ❌ Yanlış — 2 haftadır main'den sync olmamak
# Merge ederken 50 conflict çıkar
# ✅ Doğru — her gün main ile sync ol
git fetch origin
git rebase origin/main
# Küçük conflict'leri erken çözmek, büyük conflict'ten iyidir4. Commit Mesajı Disiplinsizliği
# ❌ Yanlış
git commit -m "fix"
git commit -m "."
git commit -m "asdfgh"
# ✅ Doğru
# commitlint + husky zorlasın
# PR'da squash merge yapılsa bile, PR başlığı önemlidirÖzet
Bu derste ekip çalışmasının Git boyutunu ele aldık. İşte hatırlanması gereken ana noktalar:
🌿 Branch naming convention ekibin ortak dili —
type/ticket-descriptionformatını kullanın📝 Conventional Commits (feat, fix, docs...) hem okunabilirlik sağlar hem otomasyon tetikler
🔍 PR etiquette — küçük PR'lar, açıklayıcı description, yapıcı review yorumları
🔄 Günlük sync — her gün main'den güncelleme alın, conflict'leri erken çözün
🤝 İletişim — force push öncesi bilgilendir, review'lara 24 saat içinde yanıt ver
⚡ Squash merge — çoğu ekip için en temiz strateji, PR başına tek commit
🛡️ Otomasyon — commitlint, PR template, GitHub CLI workflow'u otomatize eder
Bir sonraki derste, Monorepo vs Multi-repo stratejilerini ve büyük projelerin kod organizasyonunu inceleyeceğiz.
AI Asistan
Sorularını yanıtlamaya hazır