HEAD referansı
- Git kursu
- Orta seviye
- Ders 43/82
- 4 dk
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..HEADBu 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~3Birden 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
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
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
git reset --soft ____
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 |