Git, dağıtık versiyon kontrol sistemidir. Dosyalarınızın her versiyonunu saklar, ekip içi paralel geliştirmeyi yönetir ve herhangi bir ana geri dönmenizi sağlar. Modern yazılım geliştirmenin temel taşıdır.
Temel Kavramlar
Kavram
Açıklama
Repository (Repo)
Projenin tüm commit geçmişini içeren dizin
Working Directory
Aktif olarak düzenlediğiniz dosyalar
Staging Area (Index)
Commit'e hazırlanan değişikliklerin bölgesi
Commit
Staging'deki değişikliklerin kalıcı kaydı
Branch
Paralel geliştirme hattı
Remote
Uzak sunucudaki repo (GitHub, GitLab)
Kurulum ve İlk Ayarlar
Temel İş Akışı
Branch Yönetimi
// BASH //
# Branch oluştur ve geçgit switch -c feature/login-sayfasi# Branch listesigit branch -a # Tüm branchlar (local + remote)# Branch değiştirgit switch main# Branchları birleştirgit switch maingit merge feature/login-sayfasi# Branch silgit branch -d feature/login-sayfasi # Birleştirilmiş branchgit branch -D feature/deneme # Zorla sil# Uzak branch'ı getir ve takip etgit switch -c feature/backend origin/feature/backend
Commit Geçmişi
// BASH //
# Geçmişi görüntülegit log --oneline --graph --all # Kompakt grafik görünümgit log --author="Ali" # Belirli yazargit log --since="1 week ago" # Zaman filtresigit log -p -- dosya.txt # Dosyanın diff geçmişi# Belirli commit'i incelegit show abc1234# Değişiklikleri karşılaştırgit diff # Unstaged değişikliklergit diff --staged # Staged değişikliklergit diff main..feature/login # Branchlar arası
Uzak Repo İşlemleri
Geri Alma İşlemleri
// BASH //
# Staged değişikliği unstage'e algit restore --staged dosya.txt# Çalışma dizinindeki değişikliği geri al (dikkat: kalıcı!)git restore dosya.txt# Commit'i geri al — yeni geri alma commit'i oluşturur (güvenli)git revert HEADgit revert abc1234# Commit'i geri al — geçmişi yeniden yazar (push'tan ÖNCE)git reset --soft HEAD~1 # Son commit'i geri al, değişiklikler stagedgit reset --mixed HEAD~1 # Son commit'i geri al, değişiklikler unstagedgit reset --hard HEAD~1 # Son commit'i ve değişiklikleri tamamen sil
Stash — Geçici Saklama
// BASH //
# Değişiklikleri geçici saklagit stash push -m "login formu yarım kaldı"# Stash listesigit stash list# Son stash'ı uygulagit stash pop# Belirli stash'ı uygulagit stash apply stash@{2}# Stash'ı silgit stash drop stash@{0}git stash clear # Hepsini sil
Rebase — Temiz Geçmiş
// BASH //
# Feature branch'ı main'in üstüne taşıgit switch feature/logingit rebase main# Etkileşimli rebase — commit'leri düzenlegit rebase -i HEAD~3 # Son 3 commit'i düzenle# Editörde:# pick abc1234 feat: login formu# squash def5678 fix: typo düzeltme ← öncekiyle birleştir# reword ghi9012 feat: şifre reset ← mesajı değiştir
Git'i etkin kullanmak; güvenle deneme yapmanızı, ekibinizle çatışmasız çalışmanızı ve hataları hızla geri almanızı sağlar. Bir sonraki derste GitHub Flow ve Pull Request iş akışını ele alacağız.