Geçmişi Okumak: log, diff, show ve Geçmişte Gezinti
Proje geçmişi sadece bir log değil, aynı zamanda kararların belgelendiği bir süreçtir. Geçmişi bilgilendirici bir şekilde okumayı öğrenelim: commit'leri filtreleme, sürümler arasındaki değişiklikleri inceleme ve SHA-1 hash'lerini korkusuzca anlama. Ayrıca 'iyi bir geçmiş' ile 'kötü bir geçmiş' arasındaki farkı ayırt etmeyi ele alacağız; bu, ekipteki algınızı doğrudan etkiler.
- Depo geçmişini okuyabilecek ve ihtiyacınız olan commit'i yazar, tarih veya anahtar kelimeye göre hızlıca bulabileceksiniz.
- Dosya sürümlerini farklı seviyelerde (çalışma dizini, indeks, commit) nasıl karşılaştıracağınızı anlayacaksınız.
- Sektörde kabul görmüş standartlara (Conventional Commits) göre commit mesajları yazmayı öğreneceksiniz.
จุดเริ่มต้นของบทเรียน
Commit Geçmişi Projenin Günlüğü Gibidir
- Git log, geçmişi ters çevrilmiş bir günlük gibi gösterir
- Her kayıt, değişikliklerin bir anlık görüntüsüdür
- Kimin, ne zaman ve neyi değiştirdiğini saklar
- Kodun evrimini görmeyi sağlar
Her Git'e değişiklik kaydettiğinizde, bir geliştirme günlüğüne girdi yaptığınızı düşünün. 'git log' komutu bu girdileri ters kronolojik sırayla gösterir – en yeniden en eskiye. Bu günlük, projenin tam kronolojisini saklar: kimin, ne zaman ve tam olarak hangi düzeltmeleri yaptığı. Bu sadece bir değişiklik listesi değil, kodunuzun evriminin canlı bir tarihidir. Bu geçmişi okuma ve analiz etme becerisi, ekip çalışmasında anahtar bir yetenektir. Sonuçta, commit geçmişi aracılığıyla projenin nasıl geliştiğini, hangi kararların alındığını ve nedenini görürsünüz. Şimdi tek bir commit'in yapısına daha yakından bakalım.
Commit Kaydını Okumak: Hash, Yazar, Tarih
- commit: benzersiz bir hash tanımlayıcı
- Author: değişiklikleri kimin ve ne zaman yaptığı
- Date: commit'in zaman damgası
- Mesaj: tam olarak neyin değiştirildiği
'git log' komutunun çıktısına bakın. Her kayıt uzun bir karakter dizisiyle başlar – bu commit'in hash'idir, benzersiz tanımlayıcısıdır. Sağında değişikliği yapan kişiyi ve düzeltmelerin yapıldığı tarihi görürsünüz. Altında, geliştiricinin değişiklikleri kaydederken yazdığı commit mesajı bulunur. Formata dikkat edin: önce yazarın e-posta adresi açılı parantez içinde, ardından zaman damgası gelir. Bu veriler, değişikliklerin bağlamını anlamaya ve gerektiğinde açıklama için yazarla iletişime geçmeye yardımcı olur. Şimdi commitment yapısını çözdüğümüze göre, hash'in ne olduğunu ve neden gerekli olduğunu anlayalım.
#!/bin/bash
cd ~/projects/git-course/
git log -1 --pretty=format:'commit %H%nAuthor: %an <%ae>%nDate: %ad%n%n %s'
Commit Hash'i – Geçmişe Açılan Anahtarınız
- Hash, commit'in dijital bir parmak izidir
- İçerik ve meta verilere bağlıdır
- Tek bir karakterin değişmesi bile hash'i değiştirir
- Herhangi bir sürüme tam olarak atıfta bulunmayı sağlar
Commit hash'i rastgele bir karakter dizisi değil, commit'in içeriğini benzersiz bir dizeye dönüştüren kriptografik bir fonksiyonun sonucudur. Commit'te bir bayt bile değiştirilirse, hash tamamen değişir. Bu, değişiklik geçmişinin bütünlüğünü garanti eder. Hash'i bilerek, bir kitaptaki yer imi gibi kodun herhangi bir sürümüne başvurabilirsiniz. Örneğin, hash ile birlikte 'git checkout' komutu sizi projenin o commit anındaki durumuna götürür. Bu, özellikle değişiklikleri geri almanız veya bir hatanın tam olarak ne zaman ortaya çıktığını analiz etmeniz gerektiğinde kullanışlıdır. Şimdi geçmişin yapısını anladığımıza göre, onu filtrelemeyi öğrenelim – çünkü gerçek projelerde binlerce commit olabilir.
บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก
ฉบับเต็มมีสไลด์เพิ่มอีก 26 สไลด์
วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก
เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิกเนื้อหาบทเรียน
- Commit Geçmişi Projenin Günlüğü Gibidir
- Commit Kaydını Okumak: Hash, Yazar, Tarih
- Commit Hash'i – Geçmişe Açılan Anahtarınız
- Bir Yazara Ait Commit'ler Nasıl Bulunur
- Commit Tarihine Göre Filtreleme
- Commit Metninde Arama
- Filtreleri Birleştirme
- Commit Geçmişini Okuma Sorunu
- --oneline ile Kompakt Görüntüleme
- --graph ile Dallanma Görselleştirmesi
- --all ile Tam Resim
- git diff Nedir ve Neden Gereklidir?
- Çalışma Dizinindeki Değişiklikleri Karşılaştırma
- Commit'e Hazırlananlar: git diff --staged
- Herhangi İki Commit'i Karşılaştırma
- Belirli Bir Commit’i Detaylı Olarak İnceleme
- Uygulama: Commit’teki Değişiklikleri İnceleme
- Commit’teki Belirli Bir Dosyayı Görüntüleme
- Bir Dosyadaki Son Değişiklikleri Bulma
- Başkasının Kodunu Geçmiş Üzerinden Analiz Etme
- Bir Fonksiyonun Eklenmesini veya Silinmesini Bulma
- Commit Mesajları Neden Önemlidir?
- İdeal Bir Commit Mesajının Yapısı
- Conventional Commits Pratikte
- Kötü Commit'leri Yeniden Yapılandırma
- Neden 'fix' Commit'leri Bir Anti-Kalıptır
- Değişikliklerin Atomikliği: Tek Commit – Tek Görev
- git add -p: Temiz Commit'ler İçin Kurtarıcı Araç
- Özet ve Görev
บทความเกี่ยวกับบทเรียนนี้
- คำสั่ง Git: ชีตสรุปพร้อมตัวอย่างสำหรับใช้ทุกวัน
- git log, diff, show และ blame: วิธีอ่านประวัติโปรเจกต์ใน Git
- git bisect: วิธีค้นหาคอมมิตที่ทำให้โค้ดพัง
- Git และ GitHub: ต่างกันอย่างไร และเชื่อมโยงกันอย่างไร
- วิธีติดตั้ง Git บน Windows, macOS และ Linux
บทเรียนทั้งหมดในคอร์สนี้
- Giriş: Sıfırdan Güvenilir Geliştiriciye Git
- Git Neden Gereklidir — ve Neden İşe Alırken Onsuz Yapamıyorlar
- Kurulum ve Yapılandırma: Git'i İlk Çalıştırmaya Hazırlama
- İlk Depo: init, add, commit ve İndeksin Sihri
- Geçmişi Okumak: log, diff, show ve Geçmişte Gezinti
- Dallar: Kodunuzun Paralel Gerçekliği
- Hataları Geri Alıyoruz: restore, reset, revert — Doğru ve Tehlikeli Kullanımları
- GitHub ve Uzaktaki Depolar: Kodunuz Bulutta
- Takım Çalışması: Fork'lar, Özellik Dalları ve Pull Request'ler
- Birleştirme Çakışmaları: Panik Yapmayın — Anlayın ve Çözün
- Gerçek Ekiplerde Git Süreçleri: Hangi İş Akışı Seçilmeli
- Gelişmiş Araçlar: rebase, stash, cherry-pick ve etiketler
- Final Proje: Gerçek Ekip Çalışmasını Simüle Ediyoruz