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.
Phần đầu bài giảng
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.
Bài giảng đầy đủ dành cho thuê bao
Còn 26 slide nữa trong phiên bản đầy đủ.
Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.
Đăng nhập hoặc đăng ký Đăng ký thuê baoNội dung bài giảng
- 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
Bài viết liên quan đến bài học này
- Lệnh Git: bảng tra cứu với ví dụ dùng hằng ngày
- git log, diff, show và blame: cách đọc lịch sử dự án trong Git
- git bisect: cách tìm commit làm hỏng code
- Git và GitHub: khác nhau thế nào và liên hệ ra sao
- Cách cài đặt Git trên Windows, macOS và Linux
Tất cả bài giảng của khóa học
- 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