Git, yazılım geliştirmede en yaygın kullanılan dağıtık versiyon kontrol sistemidir. Kodunuzun geçmişini takip etmenizi, farklı özellikler üzerinde paralel çalışmanızı ve ekip arkadaşlarınızla verimli iş birliği yapmanızı sağlar. Bu rehberde temel komutlardan ileri seviye tekniklere kadar Git'in en önemli komutlarını inceliyoruz.
Başlangıç Komutları
git init
Mevcut dizinde yeni bir Git deposu (repository) oluşturur:
git init
# Dizinde .git klasörü oluşturulur
git clone
Uzak bir depoyu yerel bilgisayarınıza kopyalar:
git clone https://github.com/kullanici/proje.git
git clone https://github.com/kullanici/proje.git ozel-klasor-adi
Temel İş Akışı
git add
Değişiklikleri staging area'ya (hazırlık alanı) ekler:
git add dosya.js # Tek dosya
git add src/ # Bir dizindeki tüm değişiklikler
git add . # Tüm değişiklikler
git add -p # Etkileşimli: değişiklikleri parça parça ekle
git commit
Staging area'daki değişiklikleri kalıcı olarak kaydeder:
git commit -m "Kullanıcı giriş formu eklendi"
git commit -am "Hata düzeltildi" # add + commit (sadece izlenen dosyalar)
İyi commit mesajı yazma kuralları:
- Başlık satırı 50 karakteri geçmesin
- Emir kipi kullanın ("Eklendi" değil, "Ekle")
- Ne yapıldığını değil, neden yapıldığını açıklayın
- Gerekirse boş satır bırakıp detaylı açıklama ekleyin
git status ve git log
git status # Çalışma dizini durumu
git log # Commit geçmişi
git log --oneline # Kısa format
git log --graph --all # Dallanma grafiği
git log -5 # Son 5 commit
Dallanma (Branching)
git branch
git branch # Dalları listele
git branch feature/login # Yeni dal oluştur
git branch -d feature/login # Dalı sil (merge edilmişse)
git branch -D feature/login # Dalı zorla sil
git checkout / git switch
git switch feature/login # Dala geç (modern)
git switch -c feature/signup # Oluştur ve geç
git checkout feature/login # Dala geç (eski yöntem)
git checkout -b feature/signup # Oluştur ve geç (eski)
Birleştirme (Merge)
# feature dalını main'e birleştir
git switch main
git merge feature/login
# Fast-forward merge'ü engelle (merge commit oluştur)
git merge --no-ff feature/login
Rebase
Rebase, bir dalın tabanını (base) değiştirir. Commit geçmişini temiz tutar:
# feature dalını main üzerine rebase et
git switch feature/login
git rebase main
# Etkileşimli rebase: commitleri düzenle, birleştir, sırala
git rebase -i HEAD~3
Altın kural: Paylaşılan (push edilmiş) dallarda rebase yapmayın. Rebase, commit hash'lerini değiştirir ve diğer geliştiricilerin çalışmasını bozar.
Stash
Yarım kalan çalışmayı geçici olarak saklar:
git stash # Değişiklikleri sakla
git stash save "açıklama" # Açıklama ile sakla
git stash list # Saklanan değişiklikleri listele
git stash pop # Son saklananı geri yükle ve sil
git stash apply # Son saklananı geri yükle (silme)
git stash drop stash@{0} # Belirli bir stash'i sil
Cherry-Pick
Başka bir daldan belirli bir commit'i almanızı sağlar:
# Belirli bir commit'i mevcut dala uygula
git cherry-pick abc1234
# Birden fazla commit
git cherry-pick abc1234 def5678
# Commit oluşturmadan değişiklikleri al
git cherry-pick --no-commit abc1234
Reset
Commit geçmişini geri alma yöntemlerinden biridir:
# Soft: commit geri al, değişiklikler staging'de kalır
git reset --soft HEAD~1
# Mixed (varsayılan): commit geri al, değişiklikler working directory'de
git reset HEAD~1
# Hard: commit ve değişikliklerin tamamını sil (DİKKAT!)
git reset --hard HEAD~1
Uyarı: --hard geri alınamaz bir işlemdir. Push edilmiş commit'lerde reset yerine git revert kullanın.
Conflict (Çakışma) Çözümü
İki dal aynı satırı değiştirdiğinde çakışma oluşur. Git çakışmayı şu şekilde işaretler:
<<<<<<< HEAD
const tema = 'koyu';
=======
const tema = 'açık';
>>>>>>> feature/tema
Çözüm adımları:
- Dosyayı açın ve çakışma işaretçilerini (
<<<,===,>>>) bulun - Doğru kodu bırakın, işaretçileri silin
git add dosya.jsile çözüldü olarak işaretleyingit commitile merge'i tamamlayın
Faydalı Konfigürasyon
# Kullanıcı bilgileri
git config --global user.name "Adınız"
git config --global user.email "[email protected]"
# Varsayılan dal adı
git config --global init.defaultBranch main
# Faydalı alias'lar
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all"
Git komutlarınızı hızlıca oluşturmak mı istiyorsunuz? SiteScripti'nin Git Komut Oluşturucu aracıyla yaygın Git işlemlerini kolayca yapabilir ve doğru komut söz dizimini öğrenebilirsiniz.
Bu konuyla ilgili araçlarımızı da deneyin: JSON Formatter, Regex Test Aracı, ENV Generator