# HEAD

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

Kısaca: HEAD, Git'te checkout edilmiş olanı, normalde bulunduğunuz branch'i gösteren işaretçidir; o branch da son commit'ini gösterir, yeni commit'ler oraya eklenir.

## Git'te HEAD nedir?

Git, HEAD'i `.git/HEAD` dosyasında saklar. Çoğu zaman bu dosya `ref: refs/heads/main` gibi bir branch'e referans içerir; yani HEAD "üzerinde olduğum branch'in ucu" demektir. Commit yaptığınızda branch yeni commit'e ilerler ve HEAD de onunla birlikte hareket eder, çünkü branch'i izler.

HEAD, göreli referansların da başlangıç noktasıdır. `HEAD~1` mevcut commit'in ebeveyni, `HEAD~3` üç commit öncesi, `HEAD^2` de bir merge commit'inin ikinci ebeveynidir. Komutlar onu her yerde kullanır: `git diff HEAD` son commit'ten beri yapılan bütün değişiklikleri gösterir, `git reset --soft HEAD~1` son commit'i geri alır ama değişikliklerini staged olarak tutar, `git show HEAD` de en son commit'i gösterir.

Yerel bir branch yerine doğrudan bir commit'i, etiketi ya da uzak bir branch'i checkout ederseniz HEAD doğrudan bir commit'i gösterir. Bu bir detached HEAD'dir: etrafa bakabilir, hatta commit de yapabilirsiniz, ama bu commit'ler hiçbir branch'e ait olmaz ve kolayca kaybolur; onları tutmak istiyorsanız `git switch -c` ile bir branch oluşturun.

Sık yapılan bir yanlış, HEAD'in her zaman depodaki en son commit anlamına geldiğini düşünmektir. Yalnızca şu anda nerede olduğunuzdur. Git ayrıca ilgili işaretçiler de tutar: reset ve rebase gibi riskli işlemlerden önce ayarlanan ve geri dönebilmenizi sağlayan `ORIG_HEAD` ile son fetch'in getirdiklerini kaydeden `FETCH_HEAD`.

## Önemli noktalar

- HEAD, checkout edilmiş olanı, normalde mevcut branch'i gösterir.
- Yeni commit'ler HEAD'in gösterdiği yere eklenir ve branch'i ilerletir.
- HEAD~1, HEAD~3 ve HEAD^2 ona göre commit'leri gösterir.
- HEAD'i doğrudan bir commit'e yönlendirmek detached HEAD'e yol açar.
- ORIG_HEAD ve FETCH_HEAD, Git'in otomatik ayarladığı ilgili işaretçilerdir.

## Örnek: HEAD'e bakmak ve onu kullanmak

```bash
cat .git/HEAD
# ref: refs/heads/main          ← HEAD follows the main branch

git log --oneline -3
# 9f2c1ab (HEAD -> main) Add search
# 41d0e77 Fix login redirect
# c83b5a2 Initial commit

git show HEAD~1 --stat          # the commit before the latest
git diff HEAD                   # everything changed since the last commit
git reset --soft HEAD~1         # undo the last commit, keep its changes staged
```

## Sık sorulan sorular

**HEAD~1 ne demek?**

HEAD'in gösterdiği commit'in ebeveyni, yani geçmişte bir adım geri. HEAD~2 iki adım geridir ve böyle devam eder. İki ebeveyni olan merge commit'lerinde HEAD^2 ikinci ebeveyni seçer.

**Detached HEAD nedir?**

HEAD'in bir branch yerine doğrudan bir commit'i gösterdiği durumdur; örneğin bir etiketi ya da eski bir commit'i checkout ettikten sonra. Orada yapılan commit'ler, siz bir branch oluşturana kadar hiçbir branch'te değildir.

**HEAD ile main arasındaki fark nedir?**

main bir branch'tir: bir commit'i gösteren bir işaretçi. HEAD ise o anda üzerinde olduğunuz branch'i gösterir. main üzerindeyken ikisi aynı commit'i gösterir, ama branch değiştirdikten sonra HEAD yeni branch'i gösterir.

---

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