# Staging Area

Adres: https://softwaredictionary.org/tr/terimler/staging-area
Kategori: Sürüm Kontrolü
Son güncelleme: 2026-09-30
Okunuşu: steycing eriya

Kısaca: Git'teki staging area, dosyalarınız ile bir sonraki commit arasındaki bekleme alanıdır; o commit'e girecek değişiklikleri tam olarak buraya koyarsınız.

## Git'te staging area nedir?

Staging area, Git'in bir sonraki commit'inize girecek değişiklikleri topladığı yerdir. Bir dosyayı düzenlediğinizde değişiklik yalnızca çalışma dizininizde, yani diskte gördüğünüz sıradan proje klasöründe bulunur. `git add` çalıştırmak dosyanın mevcut sürümünü staging area'ya kaydeder; `git commit` ise stage edilmiş olan her şeyi ve yalnızca onu yeni bir anlık görüntü olarak kaydeder.

Dahili olarak staging area, `.git/index` adlı tek bir dosyadır; Git'in belgelerinin ona index de demesinin nedeni budur. İzlenen her dosyayı commit edilecek sürümüyle birlikte listeler; bu yüzden bir dosyayı stage ettikten sonra düzenlemeye devam ederseniz, yeni düzenlemeler siz yeniden `git add` çalıştırana kadar stage edilmemiş kalır. `git status` her iki grubu da 'Changes to be committed' ve 'Changes not staged for commit' başlıkları altında gösterir.

Staging area, bir sevkiyat kutusunun yanındaki paketleme masası gibidir: eşyaları odanın dört bir yanından toplar, masada kontrol eder ve ancak sonra masadakileri kutuya kapatırsınız. Bu, bir öğleden sonranın karışık düzenlemelerini birkaç küçük ve odaklı commit'e bölmenizi sağlar. `git add -p` daha da ileri gider ve tek bir dosyadaki değişikliklerin yalnızca bir kısmını stage etmenize izin verir.

Staging area sıklıkla commit ya da stash ile karıştırılır. Stage edilmiş değişiklikler yalnızca bir sonraki commit'in taslağıdır ve henüz proje geçmişinin parçası değildir; commit ise kalıcı bir anlık görüntüdür. `git stash` ile yapılan stash ise bir başka şeydir: bitmemiş işi ayrı bir rafa kaldırır ve çalışma dizinini temizler. Bir dosyayı düzenlemelerinizi kaybetmeden staging area'dan çıkarmak için `git restore --staged <file>` kullanın.

## Önemli noktalar

- Staging area, bir sonraki commit'e girecek değişiklikleri tutar.
- `git add` değişiklikleri stage eder, `git commit` ise yalnızca stage edilenleri kaydeder.
- Git staging area'yı `.git/index` dosyasında saklar; bu yüzden ona index de denir.
- `git add -p` bir dosyanın yalnızca bir kısmını stage eder; bu da commit'leri küçük ve odaklı tutmaya yardımcı olur.
- `git restore --staged <file>` düzenlemelerinizi koruyarak bir dosyayı staging'den çıkarır.

## Örnek: Commit etmek istediğiniz şeyi tam olarak stage etmek

```bash
# Edit two files, then stage only one of them
git add src/login.ts
git status
#   Changes to be committed:        modified: src/login.ts
#   Changes not staged for commit:  modified: src/styles.css

# Stage only some of the changes inside a file, hunk by hunk
git add -p src/styles.css

# Review exactly what the next commit will contain, then commit it
git diff --staged
git commit -m "Fix login form validation"

# Unstage a file but keep your edits
git restore --staged src/styles.css
```

## Sık sorulan sorular

**Stage edilmiş ve edilmemiş değişiklikler arasındaki fark nedir?**

Stage edilmiş değişiklikler `git add` ile eklenmiştir ve bir sonraki commit'e dahil edilir. Stage edilmemiş değişiklikler ise çalışma dizininizdeki, Git'in fark ettiği ancak siz stage edene kadar commit etmeyeceği düzenlemelerdir.

**Staging area neden index olarak da adlandırılır?**

Git staging area'yı `.git/index` adlı bir dosyada saklar; bu yüzden Git'in komutları ve belgeleri `git diff --cached` örneğindeki gibi sıklıkla index sözcüğünü kullanır. Staging area, index ve cache aynı şeyi ifade eder.

**Staging area'yı kullanmadan commit yapabilir miyim?**

Çoğunlukla evet. `git commit -a` commit etmeden önce değiştirilmiş her izlenen dosyayı otomatik olarak stage eder, ancak yeni izlenmeyen dosyaları yine atlar; onların önce `git add` ile eklenmesi gerekir.

---

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