# Git Diff

Adres: https://softwaredictionary.org/tr/terimler/git-diff
Kategori: Sürüm Kontrolü
Son güncelleme: 2026-09-30

Kısaca: Git diff, çalışma dosyaları, stage edilmiş değişiklikler veya commit'ler gibi kodunuzun iki sürümü arasındaki tam satır satır farkları gösteren Git komutudur.

## git diff nedir?

`git diff`, 'tam olarak ne değişti?' sorusunu yanıtlar. Dosyalarınızın iki sürümünü karşılaştırır ve yalnızca farklı olan satırları yazdırır: `-` ile başlayan satırlar kaldırılmış, `+` ile başlayan satırlar eklenmiştir; her değişikliğin çevresindeki bağlam (context) adı verilen birkaç değişmemiş satır ise değişikliğin nerede olduğunu gösterir. Bu biçime unified diff denir ve bir pull request'i incelerken gördüğünüz görünümle aynıdır.

Neyin karşılaştırılacağı argümanlara bağlıdır. Düz `git diff` çalışma dizininizdeki henüz stage etmediğiniz düzenlemeleri, `git diff --staged` bir sonraki commit'in neyi içereceğini, `git diff main feature` ise iki branch'in son commit'lerini karşılaştırır. Ayrıca herhangi iki commit'i hash ile karşılaştırabilir, çıktıyı tek bir dosyayla sınırlamak için bir dosya yolu ekleyebilir ya da her dosyada kaç satırın değiştiğinin kısa özeti için `--stat` kullanabilirsiniz.

Diff, bir kelime işlemcideki değişiklik izleme görünümüne benzer; tüm belge yerine silinenleri ve eklenenleri gösterir. Geliştiriciler işlerini iki kez kontrol etmek için commit'ten önce `git diff` çalıştırır, kod inceleme araçları inceleyenlerin yeni olana odaklanabilmesi için diff'leri gösterir ve çıktı bir yama dosyası (patch) olarak kaydedilip başka bir yerde `git apply` ile uygulanabilir.

`git diff` sıklıkla `git status` ve `git log` ile karıştırılır. Status yalnızca hangi dosyaların değiştiğini listeler, log commit'leri listeler, diff ise değişikliklerin içindeki gerçek satırları gösterir. Yaygın bir sürpriz, `git add` sonrasında düz `git diff`'in hiçbir şey göstermemesidir: değişiklikler artık stage edilmiştir, bu yüzden onları görmek için `git diff --staged` gerekir; yepyeni izlenmeyen dosyalar ise düz `git diff`'te hiç görünmez.

## Önemli noktalar

- `git diff` satır satır değişiklikleri gösterir; kaldırılan satırlar için `-`, eklenen satırlar için `+` kullanılır.
- Düz `git diff` stage edilmemiş değişiklikleri gösterir; `git diff --staged` commit edilecekleri gösterir.
- Branch'leri, commit'leri ya da tek dosyaları karşılaştırabilirsiniz; `--stat` her dosyanın değişikliklerini özetler.
- `git diff main...feature`, bir branch'in ayrıldığından beri neyi değiştirdiğini, bir pull request'in yaptığı gibi gösterir.
- Diff'ler kod incelemesinin ve başka yerde uygulanabilen yama dosyalarının temelidir.

## Örnek: git diff ile değişiklikleri karşılaştırmak

```bash
# Unstaged changes in your working directory
git diff

# Staged changes: what the next commit will contain
git diff --staged

# What a feature branch changed since it split from main
git diff main...feature/search --stat

# Sample output for one changed line:
# @@ -12,2 +12,2 @@ function total(items) {
#    const sum = items.reduce((a, b) => a + b, 0);
# -  return sum;
# +  return sum + tax;
```

## Sık sorulan sorular

**Git'te stage edilmiş değişiklikleri nasıl görürüm?**

`git diff --staged` ya da eski eş anlamlısı `git diff --cached` çalıştırın. Düz `git diff` yalnızca henüz stage edilmemiş değişiklikleri gösterir.

**Git'te iki branch nasıl karşılaştırılır?**

Son commit'lerini doğrudan karşılaştırmak için `git diff branch-a branch-b`, `branch-b`'nin `branch-a`'dan ayrıldığından beri yalnızca neyi değiştirdiğini görmek için `git diff branch-a...branch-b` kullanın. Dosya başına özet için `--stat`, yalnızca dosya adlarını listelemek için `--name-only` ekleyin.

**Bir diff'teki artı ve eksi işaretleri ne anlama gelir?**

`-` ile başlayan satırlar eski sürümde bulunur ama yenisinde yoktur; `+` ile başlayan satırlar ise yalnızca yeni sürümde bulunur. Değiştirilmiş bir satır, bir silme ve ardından bir ekleme olarak görünür; `@@` ile başlayan satırlar ise her değişiklik bloğunun nerede başladığını gösterir.

---

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