Tek commit alma
- Git kursu
- Orta seviye
- Ders 34/82
- 4 dk
Başka daldan tek commit almayı öğrenirsin.
Commit hash ile seçme
Her commit'in benzersiz bir hash değeri vardır. git log --oneline komutu commit'leri hash'leriyle tek satırda listeler; cherry-pick'e vermek istediğin hash'i buradan alırsın. git rev-parse HEAD ise o anki commit'in hash'ini doğrudan verir.
git log --oneline
a1b2c3d ozellik eklendi
7f0c411 temel kayitBöylece taşınacak commit tek tek belirlenir.
Başka daldan tek commit
Başka daldan tek commit almak için önce o commit'in hash'ini alır, sonra geçerli dala uygularsın. Hash'i bir değişkende tutarsan iki komut arasında kaybolmaz; git checkout - bir önceki dala döner.
HASH=$(git rev-parse HEAD)
git checkout -
git cherry-pick $HASHBöylece yalnızca seçtiğin commit taşınır.
Uygulama Hash ile commit taşı
temel.txt oluşturup ekle ve sessizce kaydet. gelisme adında bir dal aç; bu dalda iki.txt oluşturup içine iki yaz, ekle ve sessizce kaydet. HEAD commit'inin hash'ini HASH değişkenine kaydet, bir önceki dala dön, bu hash'teki commit'i git cherry-pick ile al ve iki.txt içeriğini yazdır.
Başlangıç kodu
git init -q
# 1) temel.txt olustur, ekle ve sessizce kaydet
# 2) gelisme adinda yeni bir dal ac
# 3) iki.txt olustur, icine iki yaz, ekle ve sessizce kaydet
# 4) HEAD commit'inin hash'ini HASH degiskenine kaydet
# 5) onceki dala don
# 6) HASH degiskenindeki commit'i cherry-pick ile al
# 7) iki.txt icerigini yazdirÖrnek çözüm
git init -q
echo temel > temel.txt
git add temel.txt
git commit -q -m "temel"
git checkout -q -b gelisme
echo iki > iki.txt
git add iki.txt
git commit -q -m "iki"
HASH=$(git rev-parse HEAD)
git checkout -q -
git cherry-pick $HASH >/dev/null 2>&1
cat iki.txtBeklenen çıktı
iki
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 cherry-pick ile taşınan commit hedef dalda nasıl görünür?
- Aynı hash numarasıyla birebir kopyalanır
- Taşındığı için kaynak daldan silinir
- Aynı değişiklikleri içeren yeni bir commit olarak görünür Doğru cevap
- Yalnızca dosya yığını olarak saklanır
Açıklama: cherry-pick taşınan commit'in değişikliklerini uygular ve hedef dalda yeni bir commit oluşturur; orijinal commit kaynak dalında kalır.
2 Hash'i al
HASH=$(git rev-parse ____)
git checkout -
git cherry-pick $HASH
HASH=$(git rev-parse HEAD)
git checkout -
git cherry-pick $HASH
Açıklama: Geçerli commit'in hash'ini veren referans HEAD'dir; FETCH_HEAD, ORIG_HEAD ve BASE_HEAD başka işler için kullanılan farklı referanslardır.
3 Hash araçları
| Kavram | Anlamı |
|---|---|
commit hash |
Commit'in benzersiz kimliği |
git log --oneline |
Hash'leri satır satır listeler |
git rev-parse HEAD |
Güncel hash'i verir |
git checkout - |
Önceki dala döner |