Ana içeriğe geç

HEAD

Okunuşu
hed
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/git-head

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 kullanmakbash
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.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar