Peta dunia

 

EN: Read in English

Dunia 10: Git Mendalam

Cari pepijat dengan bisect

Anda akan belajar: cara cari commit yang merosakkan sesuatu, dalam beberapa ujian pantas.

Teks BM belum disemak oleh penutur asli.

Masalahnya

Laman kedai tunjuk harga RM0! Minggu lepas ia RM10. Ada sepuluh commit (titik simpan) sejak itu. Yang mana merosakkannya?

Pilih satu jawapan.

Tengok

git bisect start dengan HEAD sebagai bad dan HEAD~9 sebagai good. Git kata tinggal 4 revision dan checkout Add a footer. Output terminal: $ git bisect start HEAD HEAD~9 Bisecting: 4 revisions left to test after this (roughly 2 steps) [82a74e38e18f28bb624a2849ee62343753d9790d] Add a footer

bisect: Cari commit yang merosakkan sesuatu dengan uji yang tengah, berulang kali. main “tinggi atau rendah” dengan sejarah anda. Beri satu commit rosak (bad) dan satu yang elok (good). Git checkout commit di tengah untuk anda uji.

Cuba

Jadilah detektif. Jalankan ujian, kemudian tandakan commit itu good atau bad.

Commit paling lama berfungsi. Yang terbaru rosak. Cari commit bad yang pertama.

Ujian: harga dalam index.html tak boleh RM0.

  1. 87509ecAdd shop pagegood
  2. a2fb616Add a photomungkin
  3. 70587efAdd opening hoursmungkin
  4. 0844232Add a menu linkmungkin
  5. 82a74e3Add a footermungkin
  6. c35bad4Tidy up spacingmungkin
  7. 30a497fAdd phone numbermungkin
  8. 037d9a6Add map linkmungkin
  9. 823e211Add FAQ linkmungkin
  10. accccefUpdate footer yearbad

Ujian digunakan: 0. Untuk 9 commit, bisect perlu paling banyak 4.

Teka

Sekarang ada 1,000 commit antara good dan bad. Lebih kurang berapa ujian bisect perlukan?

Pilih satu jawapan.

Tengok

git bisect run sh test.sh uji tiga commit sendiri dan namakan Tidy up spacing sebagai commit rosak yang pertama. Output terminal: $ git bisect start HEAD HEAD~9 Bisecting: 4 revisions left to test after this (roughly 2 steps) [82a74e38e18f28bb624a2849ee62343753d9790d] Add a footer $ git bisect run sh test.sh running 'sh' 'test.sh' Bisecting: 2 revisions left to test after this (roughly 1 step) [30a497f8e9e2c392b1a4a259fd5d43e8cde21bfb] Add phone number running 'sh' 'test.sh' Bisecting: 0 revisions left to test after this (roughly 0 steps) [c35bad4140074d2904a4cff307aafecb7d75173e] Tidy up spacing running 'sh' 'test.sh' c35bad4140074d2904a4cff307aafecb7d75173e is the first 'bad' commit commit c35bad4140074d2904a4cff307aafecb7d75173e (HEAD) Author: You <you@example.com> Date: Fri Oct 30 09:06:00 2026 +0800 Tidy up spacing index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) bisect found first 'bad' commit

Ada skrip ujian? git bisect run sh test.sh buat setiap langkah untuk anda. Kod keluar 0 maksudnya good. 1 maksudnya bad.

Cuba

Giliran anda. Mulakan bisect, biar test.sh menilai, kemudian balik ke branch anda.

87509eca2fb61670587ef084423282a74e3c35bad430a497f037d9a6823e211accccef

Semak

Susun langkah memburu dengan bisect.

Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.

  • Tandakan satu commit bad dan satu good
  • Uji commit yang Git checkout
  • Jalankan git bisect reset
  • Tandakan good atau bad, sehingga Git namakan pesalah
  • Jalankan git bisect start

Anda berjaya!

Kini anda boleh cari commit yang merosakkan sesuatu, dengan pantas.

Nak tahu lebih (pilihan)

Tak boleh uji satu commit, contohnya ia tak boleh dibina? git bisect skip pilih commit jiran. git bisect log tunjuk langkah anda. Memburu pembaikan, bukan pepijat? Guna git bisect old dan git bisect new, bukan good dan bad. Dalam bisect run, kod keluar 125 maksudnya langkau.

Selepas git bisect skip, Git checkout commit lain untuk diuji. Output terminal: $ git bisect start HEAD HEAD~9 Bisecting: 4 revisions left to test after this (roughly 2 steps) [82a74e38e18f28bb624a2849ee62343753d9790d] Add a footer $ git bisect skip Bisecting: 4 revisions left to test after this (roughly 2 steps) [c35bad4140074d2904a4cff307aafecb7d75173e] Tidy up spacing