Rebase vs Merge

git merge birleştirme commit'i oluşturur, tarihçeyi korur. git rebase commit'leri hedefe taşır, lineer tarihçe sağlar. Kural: public branch'leri rebase etmeyin, kendi feature branch'inizde kullanın.

İlgili rehberler: Yazılım geliştirme süreçleri · PostgreSQL optimizasyonu · Redis nedir, nasıl kullanılır · Docker ile deploy · KEYDAL yazılım geliştirme hizmetleri

# Feature branch'i main üzerine rebase
git checkout feature/auth
git rebase main

# Interactive rebase — son 3 commit'i düzenle
git rebase -i HEAD~3
# pick → squash ile birleştir, reword ile mesaj değiştir

Cherry-pick

Belirli bir commit'i başka bir branch'e taşımak için kullanılır. Hotfix senaryolarında idealdir.

# Tek commit taşı
git cherry-pick abc1234

# Birden fazla commit
git cherry-pick abc1234 def5678

# Commit oluşturmadan (staging'e al)
git cherry-pick --no-commit abc1234

Bisect ile Hata Avı

Binary search ile hangi commit'in hatayı getirdiğini bulur. Yüzlerce commit arasında dakikalar içinde sorunu tespit eder.

git bisect start
git bisect bad          # şu anki commit hatalı
git bisect good v1.0.0  # bu commit çalışıyordu
# Git ortadaki commit'e checkout yapar — test edip bad/good deyin
git bisect good  # veya bad
# Bulunca:
git bisect reset

Stash Yönetimi

Yarım kalan işleri geçici olarak saklamak için. Branch değiştirmeniz gerektiğinde hayat kurtarır.

git stash push -m "WIP: auth form"
git stash list
git stash pop           # son stash'i uygula ve sil
git stash apply stash@{1}  # belirli stash'i uygula (silme)
git stash drop stash@{0}

Reflog — Son Çare Kurtarma

Yanlışlıkla sildiğiniz branch, reset ettiğiniz commit'ler... reflog her şeyi hatırlar (varsayılan 90 gün).

git reflog
# abc1234 HEAD@{5}: commit: important feature
git checkout abc1234  # kayıp commit'e geri dön
git branch recovered abc1234  # branch olarak kaydet

Modern Yazılım Geliştirme ve DevOps Pratikleri

Profesyonel yazılım geliştirme süreci üç pillar üzerine kuruludur: kaynak kontrolü (Git + GitHub/GitLab pull request akışı, code review zorunlu), CI/CD pipeline (otomatik test + lint + build + deploy), ve gözlemlenebilirlik (Sentry/Datadog/Grafana ile log, metric, trace toplama). Test piramidi (unit > integration > e2e) ile kod kalitesini garantilemek, mikroservis mimarisinde Docker container ve Kubernetes orkestrasyonu kullanmak, REST veya GraphQL API tasarımında OpenAPI/GraphQL Schema sözleşmesi tutmak modern standardlardır. Yazılım geliştirme yaşam döngüsü boyunca (gereksinim → tasarım → implementasyon → test → deploy → bakım) Agile/Scrum sprintleri 1-2 hafta, DevOps takımları sürekli teslim (continuous delivery) prensibiyle çalışır.

WhatsApp