CodeBlanks Logo Icon CodeBlanks

HEAD referansı

HEAD~ ile önceki commit'lere başvurmayı öğrenirsin.

Tilde (~) sözdizimi ve ata commit'ler

Git'te commit hash'ini elle yazmak yerine HEAD işaretçisine tilde (~) ekleyerek önceki ata commit'lere doğrudan başvurabilirsin. HEAD~1 (veya kısaca HEAD~) mevcut commit'in hemen bir önceki ebeveynini belirtir. HEAD~2 iki commit öncesini, HEAD~3 ise üç commit öncesini ifade eder.

# 2 commit geriye git:
git reset --mixed HEAD~2
# 3 commit geriye git:
git log --oneline HEAD~3..HEAD

Bu gösterim sayesinde commit geçmişinde geriye doğru adımları zahmetsizce hesaplarsın.

Şapka (^) ve Tilde (~) farkı

HEAD~ tek bir hat üzerinde geriye doğru soy ağacında sayarak ilerler. Şapka (^) sembolü ise özellikle birden fazla ebeveyni olan merge commit'lerde farklı ebeveynleri seçmek için kullanılır. Doğrusal bir dalda HEAD~1 ile HEAD^ aynı commit'i gösterir.

# Son 3 commit'i sahneye cikararak geri al:
git reset --soft HEAD~3

Birden fazla commit'i tek hamlede geri almak için tilde numaralandırması en pratik yoldur.

Uygulama İki commit geriye hard reset at

git reset --hard -q HEAD~2 ile iki commit geriye dön ve son commit başlığını git log -1 --format="%s" ile ekrana bas.

Başlangıç kodu

terminal
git init -q -b main
git config user.name "Eren"
git config user.email "eren@example.com"
echo "1" > veri.txt
git add veri.txt
git commit -qm "temel"
echo "2" > veri.txt
git commit -am -q "ikinci"
echo "3" > veri.txt
git commit -am -q "ucuncu"

# HEAD~2'ye hard reset at ve son commit basligini bas

Örnek çözüm

terminal
git init -q -b main
git config user.name "Eren"
git config user.email "eren@example.com"
echo "1" > veri.txt
git add veri.txt
git commit -qm "temel"
echo "2" > veri.txt
git commit -am -q "ikinci"
echo "3" > veri.txt
git commit -am -q "ucuncu"

git reset --hard -q HEAD~2
git log -1 --format="%s"

Beklenen çıktı

temel

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 HEAD~2 ifadesi Git'te neyi temsil eder?

  • Mevcut HEAD commit'inden 2 adım önceki ata commit'i Doğru cevap
  • Sahneleme alanına eklenen son 2 dosyanın farkını
  • Yalnızca son 2 saat içinde yapılan commit'leri
  • Depodaki 2 numaralı dalın en son commit'ini

Açıklama: Tilde sözdiziminde HEAD~n, doğrudan ebeveyn soyunda n adım gerideki ata commit'i işaret eder.

2 İki commit geriye git

Soru
git reset --soft ____
Cevap
git reset --soft HEAD~2

Açıklama: HEAD~2, mevcut commit'ten 2 adım önceki ata commit'i temsil eder.

3 Ata referansları

Kavram Anlamı
HEAD~1 Bir önceki ata commit'i gösterir
HEAD~3 Üç commit önceki atayı işaret eder
Tilde (~) Soy hattında geriye doğru sayar
Commit hash alternatifi Hash yazmadan ataya erişim sağlar

Orta seviye bölümündeki tüm dersler

20 Orta seviye finali

  1. Dal yönetimi
  2. Rebase
  3. Çatışma
  4. PR akışı