CodeBlanks Logo Icon CodeBlanks

Tek commit alma

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 kayit

Bö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 $HASH

Bö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

terminal
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

terminal
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.txt

Beklenen çı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

Soru
HASH=$(git rev-parse ____)
git checkout -
git cherry-pick $HASH
Cevap
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

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ışı