Fatih Acet

Fatih Acet

Frontend Engineer at GitLab.com

twittergitlabgithubenvelope-olinkedinyoutubeinstagram

Git ile bug olusturan commit'i bulmak - git bisect

Gecen hafta calisan ama bugun calismayan bir ozellige rastladiniz ve kodda saga sola baktiniz ama nerede ve nasil patladigini bulamadiniz. git bisect kullanarak hangi commit ile kirildigini cok daha kolay bir sekilde bulabilirsiniz.

git bisect iki commit id arasinda binary search yaparak kisa bir sure icinde size bir bug’in ortaya ciktigi commit id’sini veriyor.

git bisect‘i kullanmak icin oncellikle 2 commmit id’sine ihtiyacimiz var. Birincisi herseyin duzgun oldugu bir commit id’si ve ozelligimizin calismadigi commit id’si. Bu commit id’leri bulduktan sonra git bisect‘e baslayabiliriz.

Calisan commit id’si 1111 olsun.
Calismayan commit id’si 9999 olsun.

1
2
3
git bisect start
git bisect good 1111
git bisect bad 9999

Bu komutlardan sonra git’e bir aralik vermis olduk. Git bizim icin binary search ile ortalama 6-8 adimda[1] bozuk olan commit id’sini verecek. Simdi gidip sayfamizi refresh edip test edelim. Eger bug’imiz hala yerinde duruyorsa git bisect bad bug’i tekrar edemiyorsak git bisect good komutunu calistiralim. Bunu yaptiktan sonra git baska bir commit id’ye checkout ederek tekrar test etmemizi isteyecek. Ayni sekilde git bisect good git bisect bad diye devam ederek sonuncu adama kadar gelelim ve butun adimlari bitirdikten sonra git bize aradigimiz commit’i kendi elleriyle teslim edecek.

Commit’imizi bulduktan sonra bisect islemini bitirmek icin git bisect reset demeniz yeterli olacaktir.

Ufak bir not, bisect’e baslamadan once bulundugunuz branch’in aynisindan bir branch daha acip onun uzerinde yaparsaniz hata yaptiginiz yada geri donmek istediginiz anda cok daha rahat edersiniz. Bulundugunuz branch’ten yeni bir branch daha acmak icin git checkout -b yeni-branch eski branch’inize donmek icin git checkout eski-branch demeniz yeterli olur.

[1] Commit araligina gore adim sayisi degismektedir. Cok genis aralik verirseniz daha cok adim test etmek durumunda kalirsiniz.

Comments

Kolay IK Yazilim Kampi: Genclere egitim ve is firsati

Arkadaslar Kolay IK bir egitim kampi duzenliyor. Yaklasik bir bucuk ay surecek bu egitimde HTML, CSS, JS, NodeJS, Laravel, PostgreSQL, MongoDB, Redis, ...

Git nedir? Neden ve nasil kullaniyoruz?

Ne nedir'in ikinci videosunda Git'den bahsettim. Git'in ne oldugundan, neden kullandigimizdan, oneminden, SSH key'lerin ne oldugundan ve nasil ...

Vue JS, Vue Router ve Vuex SPA Bölüm 4

Vue Router, Vuex ve Firebase kullarak gelistirdigim Vue Single Page Application'in dorduncu bolumu. Bir onceki bolumde uygulamanin anasayfasini yapmistik, ...

Terminal nedir? Neden kullaniyoruz?

Ne Nedir playlist'inin ilk videosunda Terminal'in ne olduguna ve gunluk hayatimizda neden ve nelerde kullandigimizi anlattim. Mac OS icinde yuklu gelen ...

GitLab'da 1. yilim bitti. Ne yaptim, ne ogrendim?

Mayis 2016'da calismaya basladigim GitLab'da bir yil gecirdim ve gectigimiz bir yilin ozetini yapmak icin GitLab'e nasil girdim? Ben GitLab'e girdigimde GitLab ...

Vue JS, Vue Router ve Vuex SPA Bölüm 3

Vue Router, Vuex ve Firebase kullarak gelistirdigim Vue Single Page Application'in ucuncu bolumu. Bu bolumde uygulamamizi ayaga kaldirip, anasayfamizi ...

Vue JS, Vue Router ve Vuex SPA Bölüm 2

Vue Router, Vuex ve Firebase kullarak gelistirdigim Vue Single Page Application'in ikinci bolumu. Bu bolumde Vuex ve Vue Router'in temel prensiplerinden ...

Vue JS, Vue Router ve Vuex SPA Bölüm 1

Vue Router, Vuex ve Firebase kullarak gelistirdigim Vue Single Page Application'in birinci bolumu. Uygulama videolarini ise Playlist'de bulabilirsiniz. Vue JS ile ...

Vue JS, Vue Router ve Vuex SPA Trailer

Vue JS, Vue Router ve Vuex kullanarak gelistirdigim Single Page Application'in tanitim videosu. Uygulama videolarini ise Playlist'de bulabilirsiniz. Vue JS ile ...

Çayı demledin mi? Aile boyu uzaktan çalışma deneyimlerimiz

Bu videoda kanalima esimi de davet ettim, uzaktan calisma tecrubelerimizden bahsettik ve keyifli bir sohbet ortaya cikti. Umarim izlerken siz de keyif alirsiniz.

Jstanbul Meetup: GitLab'da VueJS'i nasil ve neden kullaniyoruz?

Bu videoda 8. Jstanbul Meetup'da, daha once yapmis oldugum bir VueJS sunumu ile bir giris yaptim ve ardindan GitLab'da neden VueJS tercih ettigimizden, ...

All Aspects of Remote Working

The talk about Remote Working I gave in Bilkent University, Ankara.

Yazilim gelistirme ve Frontend uzerine soru cevap canli yayini

Yazilim gelistirme ve Frontend dunyasi uzerine merak ettiginiz sorulara canli yayinda cevap vermeye calisacagim.

Genclere ve kendini gelistirmek isteyenlere tavsiyeler

Bu videoda yazilim sektorunde yeni giris yapacaklara ve kendisini gelistirmek isteyenlere nacizane tavsiyelerimi aktariyorum. Frontend ve yazilim gelistirme ...

JS egitim serisi ve Pro JS kitabi hakkinda

Dogukan Guven Nomak ve Fatih Kadir Akin ile cektigimiz jQuery Biliyorum Ama JavaScript Bilmiyorum videosunda bahsettigim JS kitabi ve JS egitimleri ...

VueJS 11: Swagger ile API tasarlayalim

Bu videoda, Swagger kullanarak basit bir API tasarlayacagiz ve bir sonraki videoda bu API'i kullanarak Vue Form islemleri yapacagiz. Swagger cok uzmani ...

VueJS ile GitLab icin proje yapiyorum

GitLab'de bulunan merge request widget'ini VueJS ile refactor ediyorum. Canli yayinda bakalim neler olacak :)

VueJS 10: Vue JS icin Unit ve E2E testler yazmak

Bu videoda Vue JS uygulamamizi test etmekteyi anlattim. Vue JS uygulamamiz icin Karma, Mocha ve Chai ile Unit test ve Nightwatch ile E2E testler yazdik.

VueJS 09: BONUS 1: Eksik kalan kisimlar

Bu videoda bir onceki videolardan eksik kalan kisimlari anlattigim bir video oldu. Filters, nextTick, event modifiers gibi guzel ve farkli konuladan bahsettim.

VueJS 08: Vue Router

Serinin 8. videosunda Vue Router'dan bahsettim. Vue Router kullanarak biri basit digeri daha kapsamli iki ornek yaptik. Bu videoda yazilan kodlari GitHub ve ...

VueJS 07: Giphy API kullanarak yeni bir app yapalim

Bu videoda bir onceki videoda kullanmaya basladigimiz vue-cli ile yeni bir proje olusturduk ve Giphy API'ini kullanarak yeni bir app yaptik. Diger app'den farkli ...

VueJS 06: vue-cli ve .vue dosyalarinin yapisi

Bu videoda vue-cli'dan ve vue-cli'in kullanimindan bahsettik. Basit bir webpack projesi olusturup, HTML, CSS ve JS'imizin bir arada oldugu .vue dosyalarinin ...

VueJS 05: Components

Bu videoda bir onceki ornekte yaptigimiz Amazon Cart benzeri ekrani Vue Component'i olacak sekilde refactor ettik. Vue'da Component'ler cok onemli bir yer ...

VueJS 04: Computed Properties ile dinamik data kullanimi

VueJS serisinin dorduncu videosu. Daha onceki videolari kanalimda bulabilirsiniz. Bu videoda VueJS'deki Computed Properties'den bahsettim. Bir onceki ...

VueJS 03: Amazon benzeri bir shopping cart yapiyoruz

Bu videoda VueJS'deki v-for ozelligini kullanarak dinamik olarak server'dan cektigimiz data ile Amazon Shopping Cart benzeri bir ekran yapiyoruz. Bu videoda ...

VueJS 02: Hello World!

Bu videoda VueJS'e kod uzerinde giris yaptik. Konu listesi 00:40 GitHub VueJS reposu 01:16 Vue.js anasayfasi 02:19 Awesome Vue 03:00 Vue Hello World ...

VueJS 01: VueJS ile Uygulama Geliştirme Sunumu

VueJS ile ilgili video serimin ilk videosu. Bu video'da daha önce yaptığım VueJS sunumunu tekrar anlattım, bu sayede VueJS'e genel bir bakış atmış olduk.