Ana içeriğe geç

Git Bisect

Okunuşu
git baysekt
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/git-bisect

Kısaca

Git bisect, commit geçmişinde ikili arama (binary search) yaparak hatayı getiren commit'i, yalnızca birkaç commit'i test ederek bulan Git komutudur.

git bisect nedir?

Git bisect, bir hatayı hangi commit'in ortaya çıkardığını bulan bir hata ayıklama komutudur. Git'e kodun iyi olduğu bir commit'i ve kötü olduğu bir commit'i söylersiniz; Git de test etmeniz için aralarının tam ortasındaki bir commit'i checkout eder. Onu iyi ya da kötü olarak işaretledikten sonra Git aralığı yeniden ikiye böler ve sonunda yalnızca ilk kötü commit kalır.

İkili arama kullandığı için git bisect çok az adım gerektirir: 1.000 commit'i taramak için yaklaşık 10 test, bir milyon commit için yaklaşık 20 test yeterlidir. Commit'leri git bisect good ve git bisect bad ile elle işaretleyebilir ya da kod çalışıyorsa 0, başarısız oluyorsa sıfırdan farklı bir kodla çıkan bir betiğin ardından git bisect run yazarak tüm süreci otomatikleştirebilirsiniz. İşiniz bittiğinde git bisect reset sizi başladığınız branch'e geri döndürür.

Bu, uzun bir kitapta bir yazım hatasının ilk göründüğü sayfayı, kitabı ortadan açıp kontrol ederek ve sonra yalnızca onu içermesi gereken yarıda arayarak bulmaya benzer. Git bisect özellikle regresyonlarda, yani eskiden çalışan özelliklerdeki hatalarda, birçok yakın tarihli değişiklikten hangisinin bozduğunu kimsenin bilmediği durumlarda kullanışlıdır.

Git bisect bazen git blame ile karıştırılır. Blame, bir dosyanın her satırını en son kimin değiştirdiğini gösterir ve hatanın nerede olduğunu zaten bildiğinizde işe yarar; bisect ise hangi dosyanın söz konusu olduğunu bilmeseniz bile davranışa neden olan commit'i bulur. Bisect, her commit derlenip temel testleri geçtiğinde en iyi çalışır; ekiplerin küçük ve kendi içinde bütün commit'lere değer vermesinin nedenlerinden biri de budur.

Önemli noktalar

  • Git bisect, bir hatayı ortaya çıkaran ilk commit'i bulur.
  • İkili arama kullanır; bu yüzden adım sayısı geçmiş boyutuyla çok yavaş artar.
  • Commit'leri git bisect good ve git bisect bad ile işaretlersiniz.
  • git bisect run aramayı bir test betiğiyle otomatikleştirir.
  • Branch'inize dönmek için her zaman git bisect reset ile bitirin.

Örnek

Testleri bozan commit'i bulmakbash
# Start a bisect session
git bisect start
git bisect bad                 # the current commit has the bug
git bisect good v2.3.0         # this older tag was working

# Git checks out a commit in the middle: test it, then mark it
git bisect good                # or: git bisect bad

# Or let a script decide automatically (exit 0 = good, non-zero = bad)
git bisect run npm test

# Return to where you started
git bisect reset

Sık sorulan sorular

git bisect ne yapar?

Bilinen iyi ve bilinen kötü bir sürüm arasındaki tam ortadaki commit'i tekrar tekrar checkout ederek bir hatayı ortaya çıkaran commit'i bulmanıza yardımcı olur. Her birini test edip işaretlersiniz; Git de yalnızca suçlu kalana kadar aralığı daraltır.

git bisect sırasında bir commit test edilemiyorsa ne olur?

git bisect skip çalıştırın; Git bunun yerine yakındaki bir commit seçer. Çok fazla commit atlanırsa Git yalnızca olası suçluların küçük bir aralığını bildirebilir.

git bisect ile git blame arasındaki fark nedir?

git blame bir dosyanın her satırını en son hangi commit'in değiştirdiğini gösterirken, git bisect bir davranışın bozulduğu commit'i geçmişte arar. Şüpheli satırı biliyorsanız blame'i, yalnızca bir şeyin eskiden çalıştığını biliyorsanız bisect'i kullanın.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar