Git geçmişini düzenlemek: rebase, cherry-pick, bisect
Geçmişi güvenle yeniden yazmayı, değişiklikleri dallar arasında taşımayı ve hatayı getiren commit’i bulmayı öğrenirsin.
Seviye 201 · 16 ders · 15 pratik lab
Dersler
Rebase
- Rebase nedir, birleştirmeden farkı
- Etkileşimli rebase: sırala, birleştir, böl
- fixup commit’leri ve autosquash
- Rebase çatışmaları ve güvenli vazgeçmek
- Paylaşılmış geçmişi yeniden yazmamak ve force-with-lease
- Kısa görev: dağınık özellik dalını temiz commit’lere dönüştür
Değişiklik taşımak
- cherry-pick ile tek değişikliği taşımak
- Eski sürüme düzeltme geri taşımak
- Birleştirme commit’ini geri almak
- Kısa görev: güvenlik düzeltmesini iki eski sürüme taşı
Hatayı geçmişte bulmak
- log -S, -G ve --follow ile geçmişte arama
- blame ile satırın hikâyesi
- bisect ile ikili arama
- bisect run ile otomatik arama
- Kısa görev: yavaşlamayı getiren commit’i bul
Kapanış
- Bitirme görevi: bir sürüm dalının geçmişini düzenle ve hatayı ayıkla
Pratik lablar
- WIP commitlerini topla: Dalın sonundaki ‘wip’ commitlerini interaktif rebase ile tek ve açıklayıcı bir commit’e birleştir ve dosya içeriğinin değişmediğini git diff ile kanıtla.
- Geç fark edilen iki düzeltme: İki eski commit’e ait düzeltmeleri fixup commit’i olarak oluştur, autosquash ile yerlerine yerleştir ve rebase sırasında her adımda testlerin geçtiğini göster.
- İkiye bölünmesi gereken dev commit: Yeniden düzenleme ile yeni özelliği karıştıran büyük commit’i iki mantıklı commit’e böl ve rebase --exec ile her iki commit’te de testlerin geçtiğini kanıtla.
- Yarıda kalmış rebase: Yarıda bırakılmış rebase’i güvenle iptal et, dalın rebase öncesindeki hâline döndüğünü ORIG_HEAD ve reflog ile doğrula.
- Ezilmek üzere olan iş: Ekip arkadaşının uzak dala yeni commit gönderdiği durumda yeniden yazdığın dalı --force-with-lease ile göndermeyi dene, reddi fark et, onun işini kendi dalına al ve sonra güvenle gönder.
- Altındaki dal yeniden yazılmış: Üzerine çalıştığın ortak dal başkası tarafından rebase edilmiş; kendi commitlerini yinelenen commit oluşturmadan yeni tabana taşı ve git log ile her commit’in yalnızca bir kez göründüğünü göster.
- Tek düzeltmeyi taşı: Geliştirme dalındaki tek bir düzeltmeyi kaynağını belirten not ile sürüm dalına taşı ve git log’da kaynak commit referansının göründüğünü göster.
- Dosya adı değişmiş eski sürüm: Lale Eczanesi stok uygulamasının dosya adları farklı olan eski sürümüne bir düzeltmeyi cherry-pick ile taşı, çıkan çakışmayı çöz ve eski sürümün testlerinin geçtiğini kanıtla.
- Hangi sürümde hangi düzeltme eksik?: Üç sürüm dalı ile ana dal arasında içeriği eşdeğer commitleri git cherry ile karşılaştır, eksik düzeltmelerin tablosunu çıkar ve yalnızca eksik olanları uygula.
- Hatalı birleştirmeyi geri al: Ana dalı bozan birleştirme commit’ini doğru ebeveyni seçerek geri al ve uygulamanın önceki çalışan hâline döndüğünü test betiğiyle göster.
- Geri alınan özelliği geri getir: Daha önce geri alınmış ve sonra düzeltilmiş özellik dalını yeniden birleştir; eksik kalan eski değişiklikleri de getirmek için geri almayı geri al ve sonucun eksiksiz olduğunu kanıtla.
- Biri birleştirme olan üç geri alma: Biri birleştirme commit’i olan üç hatalı değişikliği çakışmaları çözerek doğru sırada geri al ve hem testlerin geçtiğini hem de geçmişin yeniden yazılmadığını göster.
- Bu satırı kim ekledi?: Dosyalar arasında taşınmış bir yapılandırma satırının ilk eklendiği commit’i blame seçenekleriyle bul ve yazarını, tarihini ve commit mesajını raporla.
- Kaybolan fonksiyonun izi: Bir fonksiyonun kaldırıldığı ve dosyasının adının değiştiği commitleri log -S ve --follow ile bul ve fonksiyonu son hâliyle geri getir.
- Derlenmeyen commitlerle bisect: Demirhan Makine’nin hesap aracında hatayı getiren commit’i bisect run ile bul; derlenmeyen commitleri atlayan bir test betiği yaz ve bulunan commit’i kanıtıyla raporla.
Kurs hakkında
Geçmişi güvenle yeniden yazmayı, değişiklikleri dallar arasında taşımayı ve hatayı getiren commit’i bulmayı öğrenirsin.
Ne öğreneceksin
- Rebase
- Değişiklik taşımak
- Hatayı geçmişte bulmak
- Kapanış
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.