# Git Checkout

Adres: https://softwaredictionary.org/tr/terimler/git-checkout
Kategori: Sürüm Kontrolü
Son güncelleme: 2026-10-03
Okunuşu: git çekaut

Kısaca: git checkout başka bir branch'e ya da commit'e geçer veya dosyaları önceki sürüme döndürür; yeni Git sürümleri bu işleri git switch ve git restore'a ayırır.

## git checkout ne yapar?

Yıllarca `git checkout` oldukça farklı iki iş yaptı. `git checkout feature` branch değiştirir: HEAD'i günceller ve çalışma dizininizdeki dosyaları o branch'in sürümüyle değiştirir. `git checkout -b new-branch` tek adımda bir branch oluşturup ona geçer. `git checkout -- file.txt` ise bir dosyadaki commit'lenmemiş değişikliklerinizi atar ve onu son commit'ten geri yükler.

Tek bir komut hem branch'ler arasında geçiş yapıp hem de dosyaların üzerine yazdığı için yanlışlıkla iş kaybetmek kolaydı. 2019'da yayımlanan Git 2.23 iki odaklı komut getirdi: branch değiştirmek için `git switch` (oluşturmak için `git switch -c`) ve dosyaları geri yüklemek için `git restore` (unstage etmek için `--staged`). `git checkout` hâlâ çalışıyor, ama yeni komutlar öneriliyor.

`git checkout v2.1.0` gibi belirli bir commit'i ya da etiketi checkout etmek depoyu detached HEAD durumuna sokar; bu da eski kodu incelemek ya da bir sürüm derlemek için işe yarar. Commit'lenmemiş değişikliklerin üzerine yazılacaksa Git branch değiştirmeyi reddeder; onları commit'leyebilir, stash'leyebilir ya da çakışmıyorlarsa beraberinizde taşıyabilirsiniz.

Sık yapılan bir yanlış, checkout'un bir şey indirdiğini düşünmektir. Yalnızca yerel deponuzda zaten olanlarla çalışır; bir sunucudan yeni branch'ler almak için önce `git fetch` çalıştırın. Ayrıca bir dosyayı geri yüklemenin commit'lenmemiş değişiklikleri kalıcı olarak attığını unutmayın, çünkü Git onları hiç kaydetmemiştir.

## Önemli noktalar

- git checkout branch değiştirir ya da dosyaları geri yükler.
- git checkout -b bir branch oluşturup ona geçer.
- Git 2.23 onu git switch ve git restore olarak ikiye ayırdı.
- Bir commit'i ya da etiketi checkout etmek detached HEAD'e yol açar.
- Bir dosyayı geri yüklemek commit'lenmemiş değişiklikleri kalıcı olarak atar.

## Örnek: Eski ve yeni komutlar

```bash
# Switch branches
git checkout feature        →  git switch feature
git checkout -b fix-login   →  git switch -c fix-login

# Discard uncommitted changes to a file
git checkout -- app.js      →  git restore app.js

# Unstage a file but keep the changes
git reset HEAD app.js       →  git restore --staged app.js

# Look at an old release (detached HEAD)
git switch --detach v2.1.0
```

## Sık sorulan sorular

**git checkout ile git switch arasındaki fark nedir?**

git switch yalnızca branch değiştirir, git checkout ise dosyaları da geri yükleyebilir. Git 2.23'te eklenen git switch, günlük branch değişiklikleri için daha açık ve güvenlidir.

**Yeni bir branch oluşturup ona nasıl geçerim?**

git switch -c branch-adı ya da daha eski git checkout -b branch-adı komutunu kullanın. İkisi de branch'i mevcut commit'te oluşturur ve ona geçer.

**Git neden başka bir branch'e geçmeyi reddediyor?**

Çünkü diğer branch'in dosyalarının üzerine yazacağı commit'lenmemiş değişiklikleriniz var. Önce onları commit'leyin, git stash ile saklayın ya da atın.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
