Git, yazılım geliştirmenin vazgeçilmez aracıdır. Kod değişikliklerini takip eder, ekip çalışmasını kolaylaştırır. GitHub ise Git projelerinin bulut platformu. Bu rehberde sıfırdan ileri seviyeye Git ve GitHub kullanımını öğreneceksiniz.
Git Nedir?
Git, versiyon kontrol sistemi (VCS) yazılımıdır. 2005'te Linus Torvalds tarafından Linux çekirdeği geliştirmek için oluşturuldu.
Ne sağlar:
- Kod değişikliklerini izleme
- Önceki versiyonlara dönme
- Ekiple paralel çalışma
- Dal (branch) yapısıyla izole geliştirme
- Değişiklikleri birleştirme
GitHub Nedir?
GitHub, Git projelerini barındıran bulut platformu. Git yerel çalışır, GitHub uzakta saklar.
GitHub özellikleri:
- Uzak depo (remote repository)
- İşbirliği araçları
- Pull Request sistemi
- Issue takibi
- Actions (CI/CD)
- Açık kaynak topluluk
Git Kurulumu
Windows
git-scm.com adresinden indirip kurun.
macOS
brew install git
veya Xcode Command Line Tools ile gelir.
Linux
sudo apt install git # Debian/Ubuntu sudo dnf install git # Fedora
Kurulum Kontrolü
git --version
İlk Yapılandırma
Kullanıcı bilgilerinizi ayarlayın:
git config --global user.name "Adınız" git config --global user.email "[email protected]"
Temel Komutlar
Depo Oluşturma
git init
Mevcut klasörü Git deposuna dönüştürür.
Depo Klonlama
git clone https://github.com/kullanici/proje.git
Uzak depoyu bilgisayarınıza kopyalar.
Durum Kontrolü
git status
Değiştirilmiş, eklenmemiş ve commit'lenmemiş dosyaları gösterir.
Değişiklikleri İzleme
Staging Area'ya Ekleme
git add dosya.txt # Tek dosya git add . # Tüm değişiklikler git add *.js # Belirli uzantı
Commit (Kaydetme)
git commit -m "Değişiklik açıklaması"
Staging'deki değişiklikleri kaydeder.
Geçmişi Görme
git log git log --oneline # Kısa format git log --graph # Görsel dal yapısı
Branch (Dal) Kullanımı
Branch, kod tabanının farklı versiyonlarını aynı anda geliştirmeyi sağlar.
Dal Listeleme
git branch
Yeni Dal Oluşturma
git branch ozellik-adi
Dal Değiştirme
git checkout ozellik-adi
veya oluştur ve geç:
git checkout -b yeni-dal
Dal Silme
git branch -d dal-adi
Birleştirme (Merge)
Dalları birleştirme:
git checkout main # Ana dala geç git merge ozellik-adi # Dalı birleştir
Merge işlemi değişiklikleri ana dala aktarır.
Çakışma (Conflict)
İki dalda aynı satır değiştirilmişse çakışma oluşur.
Çözüm:
- Git çakışma işaretlerini dosyaya ekler
- Elle düzeltin (<<<, ===, >>> işaretlerini temizleyin)
- git add ile ekleyin
- git commit ile kaydedin
Uzak Depo (Remote)
Uzak Depo Ekleme
git remote add origin https://github.com/kullanici/proje.git
Uzak Depoya Gönderme (Push)
git push origin main git push -u origin main # Takip ayarla
Uzak Depodan Çekme (Pull)
git pull origin main
Uzak Değişiklikleri Getirme (Fetch)
git fetch origin
Değişiklikleri getirir ama birleştirmez.
GitHub Workflow
Fork ve Pull Request
- Projeyi fork'layın (kendi hesabınıza kopyalayın)
- Clone ile indirin
- Branch oluşturun
- Değişiklik yapın ve commit'leyin
- Push ile gönderin
- Pull Request açın
Pull Request, değişikliklerinizi orijinal projeye teklif etme yöntemidir.
Issue Takibi
GitHub Issues ile:
- Hata bildirimi
- Özellik talebi
- Görev takibi
README Dosyası
Proje açıklaması için README.md yazın:
- Projenin ne olduğu
- Nasıl kurulur
- Nasıl kullanılır
- Katkıda bulunma
İleri Seviye Komutlar
Stash (Geçici Saklama)
Değişiklikleri geçici saklamak için:
git stash # Sakla git stash list # Listeyi gör git stash pop # Geri al git stash drop # Sil
Yarım kalmış işi bırakıp başka dala geçmeniz gerektiğinde kullanın.
Rebase
Commit geçmişini düzenlemek için:
git rebase main
Merge'e alternatif. Daha düz geçmiş oluşturur.
Reset
Değişiklikleri geri alma:
git reset --soft HEAD~1 # Commit'i geri al, değişiklikler kalır git reset --hard HEAD~1 # Commit ve değişiklikleri sil
Dikkatli kullanın!
Revert
Commit'i geri alan yeni commit oluşturur:
git revert commit-hash
Güvenli geri alma yöntemi.
Cherry-pick
Belirli commit'i başka dala alma:
git cherry-pick commit-hash
.gitignore
Takip edilmeyecek dosyaları belirtin:
.gitignore node_modules/ .env *.log dist/ .DS_Store
Commit Mesajı Yazımı
İyi commit mesajı özellikleri:
Kısa ve açıklayıcı başlık (50 karakter) Boş satır Detaylı açıklama (gerekirse)
Örnek: feat: Kullanıcı girişi eklendi
- JWT token doğrulama eklendi
- Şifre hashleme implementasyonu
- Oturum yönetimi
Conventional Commits
Standart format: feat: Yeni özellik fix: Hata düzeltme docs: Dokümantasyon style: Formatlalamıştır refactor: Kod düzenleme test: Test ekleme chore: Bakım işleri
Git Branch Stratejileri
Git Flow
main: Prod sürüm develop: Geliştirme feature/: Özellikler release/: Sürüm hazırlık hotfix/*: Acil düzeltmeler
GitHub Flow
main: Her zaman deploy edilebilir Feature branch'ler → Pull Request → main
Trunk Based
main'e sık commit Kısa ömürlü branch'ler Continuous Integration
SSH Anahtarı
GitHub'a şifresiz erişim için:
ssh-keygen -t ed25519 -C "[email protected]"
Public anahtarı GitHub → Settings → SSH Keys'e ekleyin.
GitHub Actions
CI/CD için:
name: Test on: [push] jobs: test: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v3
- run: npm test
Her push'ta otomatik test çalıştırır.
Git Komut Özeti
Temel
git init, git clone, git status git add, git commit, git push, git pull
Branch
git branch, git checkout, git merge
Geri Alma
git reset, git revert, git stash
Uzak
git remote, git fetch, git push, git pull
Sonuç
Git modern yazılım geliştirmenin temelidir. Temel komutları öğrenin, branch yapısını anlayın.
GitHub ile işbirliği yapın, Pull Request sürecini benimseyin.
Commit mesajlarını anlamlı yazın, .gitignore kullanın. Pratik yaparak ustalaşın.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.