0Pricing
DevOps Bootcamp · Ders

Hata Ayıklama için Git Bisect

Bir hataya neden olan belirli gönderimi verimli bir şekilde bulmak ve değerli hata ayıklama zamanından tasarruf etmek için `git bisect` kullanın.

Hata Ayıklama için Git Bisect, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

Git ile hataları daha hızlı bulma

Hata ayıklamak zor olabilir. Bazen bir hata ortaya çıkar ve buna hangi değişikliğin neden olduğunu bilemezsiniz.

git bisect, bir hatayı ortaya çıkaran tam işlemeyi bulmanıza yardımcı olan güçlü bir Git komutudur. Binlerce işleme arasını hızla daraltmak için ikili arama algoritması kullanır.

İkili aramanın gücü

Projenizde 100 işleme olduğunu ve bir hatanın ilk ile son işleme arasında bir yerde ortaya çıktığını düşünün. Her birini el ile kontrol etmek yavaştır!

git bisect, "sayıyı tahmin et" oyunu gibi çalışır:

  • Git'e "iyi" bir işleme söylersiniz (hatanın bulunmadığı işleme).
  • Git'e "kötü" bir işleme söylersiniz (hatanın bulunduğu işleme).
  • Git yaklaşık olarak ortadaki bir işlemeyi seçer ve bunu test etmenizi ister.
  • Bu işlemeyi "iyi" veya "kötü" olarak işaretlersiniz; Git de arama alanını ikiye böler.

Aramayı başlatalım!

Başlamak için Git'e bir ikiye bölme oturumu başlattığınızı bildirmeniz gerekir. Bu komut işlemi başlatır:

git bisect start

Başlattıktan sonra bilinen bir "kötü" işlemeyi (hatanın bulunduğu) ve bilinen bir "iyi" işlemeyi (hatanın kesinlikle bulunmadığı) belirtirsiniz.

Çoğu zaman "kötü" işleme geçerli HEAD'inizdir; "iyi" işleme ise daha eski bir sürüm etiketi veya birkaç gün önceki bir işleme olabilir.

İşleme sınırlarınızı işaretleme

git bisect'i başlattıktan sonra arama aralığınızı tanımlarsınız:

  • Kötü işleme: Hatanın bulunduğunu bildiğiniz işlemedir. git bisect bad <commit-hash> komutunu veya geçerli HEAD'iniz ise yalnızca git bisect bad komutunu kullanın.
  • İyi işleme: Hatanın bulunmadığını bildiğiniz işlemedir. git bisect good <commit-hash> komutunu kullanın.

Git ardından bu aralığın ortasındaki bir işlemeyi otomatik olarak çalışma alanına alır.

Test etme ve daraltma

İyi ve kötü işlemelerinizi işaretledikten sonra Git, aralığın ortasındaki bir işlemeyi otomatik olarak çalışma alanına alır. Göreviniz, çalışma alanına alınan bu işlemedeki kodu test etmektir.

  • Hata IS mevcutsa git bisect bad yazın.
  • Hata IS NOT mevcutsa git bisect good yazın.

Git ardından kalan aralıktan ortadaki başka bir işlemeyi seçer. Git ilk "kötü" işlemeyi bulana kadar bu işlemi tekrarlarsınız.

Bir hatanın ortaya çıkışını benzetme

Bir betikte basit bir "hata" olduğunu düşünelim. Küçük bir hatanın ortaya çıktığı proje geçmişini benzetelim.

İşte başlangıçtaki "iyi" betiğimiz:

main.sh

#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
  sum=$((sum + i))
done
echo "Sum is: $sum"

El ile ikiye bölme uygulaması

Şimdi, daha sonraki bir işlemenin döngüyü yanlışlıkla seq 1 4 olarak değiştirdiğini ve toplamı hatalı hâle getirdiğini (6 yerine 10) varsayalım.

Şununla başlarız:

git bisect start

Ardından, geçerli HEAD'imizi (hatanın bulunduğu konum) kötü olarak işaretleriz:

git bisect bad HEAD

Bilinen şekilde çalışan daha eski bir işlemeyi de iyi olarak işaretleriz:

git bisect good <old_good_commit_hash>

Git, işlemeleri çalışma alanına alarak bize yol gösterecektir. ./main.sh komutunu çalıştırır, toplamın 6 mı yoksa 10 mu olduğunu görür ve buna göre git bisect good veya git bisect bad yazarsınız.

Hata ayıklama sürecini otomatikleştirme

Test karmaşıksa her işlemeyi el ile test etmek yine de zaman alabilir. git bisect run bu işlemi otomatikleştirmenizi sağlar!

Çıkış kodu olarak şunları veren bir betik sağlarsınız:

  • İşleme iyiyse 0 (sıfır).
  • İşlemenin atlanması gerekiyorsa 125.
  • İşleme kötüyse sıfır olmayan başka herhangi bir değer (ör. 1).

Git, hata bulunana kadar bu betiği test edilen her işlemede çalıştırır.

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

Aramanızı tamamlama

git bisect ilk kötü işlemeyi başarıyla belirlediğinde, size işleme karmasını ve iletisini bildirir.

Sorunun kaynağını bulup sorunu anladıktan sonra, ikiye bölme başlamadan önce deponuzu ilk durumuna döndürmeniz çok önemlidir:

git bisect reset

Bu komut, ikiye bölmeyi başlattığınız sırada üzerinde bulunduğunuz işlemeye geri döner ve geçici ikiye bölme durumunu temizler.

İkiye bölme bilgi kontrolü

Az önce git bisect start komutunu çalıştırdınız, geçerli HEAD'inizi kötü ve daha eski bir işlemeyi iyi olarak işaretlediniz. Git ortadaki bir işlemeyi çalışma alanına alıyor.

Testlerinizi çalıştırıyorsunuz ve bu ortadaki işlemede hata IS PRESENT.

`git bisect` özeti

Tebrikler! git bisect'i nasıl kullanacağınızı öğrendiniz:

  • Bir hatayı ortaya çıkaran tam işlemeyi bulmak için güçlü bir araçtır.
  • Verimlilik için ikili arama kullanır.
  • "İyi" (hatasız) ve "kötü" (hatalı) işlemeleri tanımlarsınız.
  • git bisect run <script> ile test sürecini otomatikleştirebilirsiniz.
  • Aramanızdan sonra temizlik yapmak için her zaman git bisect reset komutunu çalıştırmayı unutmayın!

Sıkça Sorulan Sorular

“Hata Ayıklama için Git Bisect” dersi ücretsiz mi?

Evet — “Hata Ayıklama için Git Bisect” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

“Hata Ayıklama için Git Bisect” dersinde ne öğreneceğim?

Bir hataya neden olan belirli gönderimi verimli bir şekilde bulmak ve değerli hata ayıklama zamanından tasarruf etmek için `git bisect` kullanın. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Hata Ayıklama için Git Bisect” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Git Reflog ve Geçmişi Kurtarma
  2. Hata Ayıklama için Git Bisect
  3. Depo Bakımı ve Düzenleme
  4. git filter-repo ile Geçmişi Yeniden Yazma
← DevOps Bootcamp Sayfasına Dön