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 Git & GitHub Professional Workflow 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, Git & GitHub Professional Workflow öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Git & GitHub Professional Workflow 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çerliHEAD'iniz ise yalnızcagit bisect badkomutunu 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 badyazın. - Hata IS NOT mevcutsa
git bisect goodyazı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
fiAramanı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 resetkomutunu ç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 Git & GitHub Professional Workflow kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Git & GitHub Professional Workflow 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. Git & GitHub Professional Workflow 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.
Git & GitHub Professional Workflow öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Git & GitHub Professional Workflow, 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 Git & GitHub Professional Workflow dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Git & GitHub Professional Workflow 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
- Git Reflog ve Geçmişi Kurtarma
- Hata Ayıklama için Git Bisect
- Depo Bakımı ve Düzenleme
- git filter-repo ile Geçmişi Yeniden Yazma