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.