Git & GitHub Nedir?
Git, dağıtık bir versiyon kontrol sistemidir; kaynak kodu güvenle sürümleyip, geçmişe dönük değişiklikleri takip etmenizi sağlar. GitHub ise Git depolarınızı barındırdığınız, ekiplerle işbirliği yaptığınız; review, issue, proje ve otomasyon (Actions) özelliklerini içeren bir platformdur.
NUVIA olarak; kod kalitesi ve izlenebilirliği artırmak için Git akışlarını PR zorunluluğu, kod sahipliği ve otomatik kalite kontrolleri ile standartlaştırırız.
Temel Kavramlar
- Repository (Repo): Projenin tüm geçmişini tutan depo.
- Commit: Değişiklik birimi; açıklayıcı mesaj zorunluluğu önerilir.
- Branch: Paralel geliştirme hattı.
main
korumalı olmalıdır. - Tag/Release: Sürüm noktaları; CI/CD ile paketlenip yayınlanır.
- Fork: Harici katkılar için depo kopyası.
Branching Stratejileri
- Trunk‑Based Development: Kısa ömürlü feature branch’ler; sık birleştirme (merge) ve otomatik test zorunluluğu.
- Git Flow:
develop
,release
,hotfix
gibi dallarla kapsamlı sürüm yönetimi. - Env‑Based Branching: Ortam dalları (
staging
,prod
) yerine uygulama yapılandırmasını ayırmak tercih edilir.
Çalışma Akışları
- Issue aç: Kapsam ve kabul kriterlerini yaz.
- Branch oluştur:
feat/
,fix/
önekleriyle isimlendir. - Commit et: Anlamlı, tek amaçlı commit’ler. Conventional Commits tercih edilir.
- PR aç: Otomatik testler, lint ve güvenlik taramaları çalışır.
- Code review: En az 1–2 onay; değişiklik isteği varsa güncelle.
- Merge & Release: Squash/merge politikaları; sürümleme ve notlar (release notes).
Pull Request En İyi Uygulamalar
- Küçük ve odaklı PR’lar; net başlık ve açıklama.
- Checklist: test, dokümantasyon, breaking change notu.
- Reviewers & CODEOWNERS ile doğru kişilere otomatik atama.
- Required status checks ve branch protection kuralları.
- Draft PR ile erken geri bildirim.
Güvenlik ve Uyumluluk
- Gizli anahtarlar: Secrets kasasında, kodda asla tutulmaz.
- İki faktörlü kimlik doğrulama (2FA) ve least privilege erişim.
- Dependabot / güvenlik taramaları ile bağımlılık yönetimi.
- İmza doğrulama (GPG, S/MIME) ve
signed commits
. - Denetim izleri: korumalı branch, review ve onay politikaları.
GitHub Actions ile CI/CD
# .github/workflows/ci.yml
name: CI
on:
pull_request:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci
- run: npm test -- --ci
- run: npm run build
Kurumsal projelerde iş akışları; cache, matris stratejisi ve ortam gizlileriyle optimize edilir.
Hızlı Komut Özeti
# Depoyu klonla
git clone https://github.com/org/repo.git
cd repo
# Yeni dal aç
git checkout -b feat/login
# Değişiklik ve commit
git add .
git commit -m "feat(login): kullanıcı girişi eklendi"
# Uzak depoya gönder ve PR aç
git push -u origin feat/login
# PR, GitHub üzerinden oluşturulur
# Güncel kal
git fetch origin
git rebase origin/main
# Sürüm etiketle
git tag -a v1.2.0 -m "Release 1.2.0"
git push origin v1.2.0
Sık Sorulanlar
Takım standardına bağlıdır. Temiz bir geçmiş için
rebase
+ squash; bağlamı korumak için merge
tercih edilebilir.Git LFS
kullanın; artefact’lar için harici depolar (Nexus/Artifactory) tercih edin.