Kubedo Academy’e hoş geldiniz! Bu laboratuvarda Git kurulumu, temel komutlar, branching ve uzak repository kullanımını öğreneceksiniz.
Zorluk seviyesi: Başlangıç
Süre: Yaklaşık 40 dakika
1. Git Nedir?
Git, Linus Torvalds tarafından 2005 yılında Linux kernel geliştirmesi için oluşturulan dağıtık versiyon kontrol sistemidir.
Neden Git?
| Özellik | Açıklama |
|---|---|
| Dağıtık | Her geliştirici tam bir kopya klonlar |
| Hızlı | Çoğu işlem lokal yapılır |
| Branching | Kolay ve hafif branch oluşturma |
| Güvenli | SHA-1 hash ile değişiklik bütünlüğü |
| Ücretsiz | Açık kaynak yazılım |
Git vs SVN
| Özellik | Git | SVN |
|---|---|---|
| Mimari | Dağıtık | Merkezi |
| Offline çalışma | ✅ Tam | ❌ Sınırlı |
| Branching | Hafif | Ağır |
| Hız | Çok hızlı | Orta |
2. Git Kurulumu
Ubuntu/Debian
$ apt update && apt install git -ymacOS
brew install git
Windows
Git for Windows indirin ve kurun.
Kurulum Doğrulama
$ git --version3. Git Yapılandırması
Temel Ayarlar
$ git config --global user.name "Adınız Soyadınız"
git config --global user.email "email@example.com"Diğer Faydalı Ayarlar
# Varsayılan editör
git config --global core.editor vim
# Varsayılan branch adı
git config --global init.defaultBranch main
# Renklendirme
git config --global color.ui auto
# Alias tanımlama
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
Ayarları Görüntüleme
$ git config --list4. Repository Oluşturma
Yeni Repository
$ mkdir my-project
cd my-project
git initMevcut Projeyi Clone’lama
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git # SSH ile
Repository Durumu
$ git status5. Temel Git İş Akışı
Git Alanları
Working Directory → Staging Area → Repository
(git add) (git commit)
| Alan | Açıklama |
|---|---|
| Working Directory | Dosyaları düzenlediğiniz alan |
| Staging Area | Commit’e hazır değişiklikler |
| Repository | Kalıcı commit geçmişi |
Dosya Ekleme (Staging)
$ echo "# My Project" > README.md
git add README.mdTüm dosyaları ekleme:
git add .
git add -A
Commit
$ git commit -m "İlk commit - README eklendi"Detaylı commit mesajı:
git commit # Editör açılır
[!TIP] Commit mesajları için Conventional Commits standardını kullanın:
feat:,fix:,docs:,chore:gibi.
6. Değişiklikleri Görüntüleme
Log - Commit Geçmişi
$ git log
git log --oneline
git log --graph --oneline --allDiff - Farkları Görme
# Working directory vs staging
git diff
# Staging vs son commit
git diff --staged
# İki commit arası
git diff abc123..def456
Show - Commit Detayı
git show abc123
7. Branch (Dal) Yönetimi
Branch’ler paralel geliştirme yapmanızı sağlar.
Branch Listeleme
$ git branch
git branch -a # Remote dahilYeni Branch Oluşturma
$ git branch feature/login
git checkout feature/loginVeya tek komutla:
git checkout -b feature/login
Branch Değiştirme
git checkout main
git switch main # Git 2.23+
Branch Silme
git branch -d feature/login # Merge edilmişse
git branch -D feature/login # Zorla sil
8. Merge (Birleştirme)
Fast-forward Merge
git checkout main
git merge feature/login
Merge Commit
git merge --no-ff feature/login
Conflict Çözümleme
Conflict oluştuğunda:
<<<<<<< HEAD
Mevcut içerik
=======
Gelen içerik
>>>>>>> feature/login
- Dosyayı düzenleyin
- Conflict işaretlerini kaldırın
git add <dosya>git commit
[!CAUTION] Merge conflict’leri dikkatlice çözün. Yanlış çözüm kod kaybına neden olabilir!
9. Uzak Repository (Remote)
Remote Ekleme
$ git remote add origin https://github.com/user/repo.git
git remote -vPush - Değişiklikleri Gönderme
git push origin main
git push -u origin main # Upstream ayarla
git push # Upstream ayarlıysa
Pull - Değişiklikleri Çekme
git pull origin main
git pull # Upstream ayarlıysa
Fetch - Sadece İndirme
git fetch origin
git fetch --all
[!NOTE]
git pull=git fetch+git merge
10. Geri Alma İşlemleri
Dosyayı Geri Alma
# Staging'den çıkar
git reset HEAD <dosya>
git restore --staged <dosya> # Git 2.23+
# Working directory'ye geri al
git checkout -- <dosya>
git restore <dosya> # Git 2.23+
Son Commit’i Düzeltme
git commit --amend -m "Düzeltilmiş mesaj"
Commit’leri Geri Alma
# Soft reset (değişiklikler korunur)
git reset --soft HEAD~1
# Mixed reset (staging temizlenir)
git reset HEAD~1
# Hard reset (her şey silinir)
git reset --hard HEAD~1
[!CAUTION]
git reset --hardkalıcıdır! Dikkatli kullanın.
11. .gitignore
Takip edilmemesi gereken dosyaları belirler.
Örnek .gitignore
# Derlenmiş dosyalar
*.class
*.o
*.pyc
# Dizinler
node_modules/
vendor/
dist/
build/
# IDE dosyaları
.idea/
.vscode/
*.swp
# Ortam dosyaları
.env
.env.local
# İşletim sistemi
.DS_Store
Thumbs.db
Global gitignore
git config --global core.excludesfile ~/.gitignore_global
12. Faydalı Komutlar
| Komut | Açıklama |
|---|---|
git stash | Değişiklikleri geçici sakla |
git stash pop | Saklananları geri getir |
git tag v1.0 | Versiyon etiketi |
git blame <dosya> | Satır bazlı değişiklik geçmişi |
git reflog | Tüm HEAD değişiklikleri |
git cherry-pick <commit> | Belirli commit’i al |
git rebase main | Branch’i yeniden temelle |
Konu Tekrarı - Kısa Sınav
Sonraki Adımlar
- GitHub/GitLab: Remote repository yönetimi
- Pull Request: Kod review süreci
- GitFlow: Branch stratejisi
- Git Hooks: Otomasyon scriptleri
- Rebase vs Merge: İleri seviye birleştirme