Git Diff Komutu: Taahhütler Arasındaki Değişiklikleri İnceleme Kılavuzu

git diff komutu, çalışma dizini, hazırlık alanı ve commit'ler arasındaki satır bazlı değişiklikleri görmenizi sağlar. Bu kılavuz, Git iş akışınızın her aşamasında diff'leri nasıl kullanacağınızı detaylandırır.

L
Linuxize
9 görüntülenme
Git Diff Komutu: Taahhütler Arasındaki Değişiklikleri İnceleme Kılavuzu

Git Diff Komutu: Taahhütler Arasındaki Değişiklikleri İnceleme Kılavuzu

Git deposundaki her değişiklik, hazırlama (staging) veya kalıcı hale getirme (commit) öncesinde incelenebilir. git diff komutu, çalışma dizininiz, hazırlık alanınız ve herhangi iki commit veya dal arasındaki eklenen, kaldırılan veya değiştirilen tam satırları gösterir.

Bu rehber, git diff komutunun iş akışınızın her aşamasında değişiklikleri gözden geçirmek için nasıl kullanılacağını açıklamaktadır.

Zorluk Seviyesi: Intermediate

Temel Kullanım: Hazırlanmamış Değişiklikler

Çalışma dizininiz ile hazırlık alanı arasındaki farkları (yani henüz git add ile eklenmemiş değişiklikleri) görmek için argümansız git diff komutunu çalıştırın:

$ git diff

Çıktıda, + ile başlayan satırlar eklenenleri, - ile başlayan satırlar ise kaldırılanları temsil eder. Önek içermeyen satırlar ise bağlam (context) satırlarıdır.

Eğer çıktı boşsa, tüm değişiklikleriniz zaten hazırlanmış demektir veya hiç değişiklik yapılmamıştır.

Hazırlanmış Değişiklikleri İnceleme (Staged Changes)

Commit edilmeye hazır olan, yani git add ile hazırlık alanına eklediğiniz değişiklikleri görmek için --staged (veya eş anlamlısı olan --cached) bayrağını kullanın:

$ git diff --staged

Bu komut, hazırlık alanını en son commit (HEAD) ile karşılaştırır ve bir sonraki commit'te tam olarak nelerin yer alacağını gösterir.

$ git diff --cached

Commit'leri Karşılaştırma

İki belirli commit arasındaki farkları doğrudan incelemek için commit hash'lerini (veya referanslarını) kullanabilirsiniz:

$ git diff abc1234 def5678

Bir Commit'in Ebeveynini Karşılaştırma

Bir commit'i hemen önceki haliyle karşılaştırmak için ^ sonekini kullanın. HEAD en son commit'i ifade ederken, HEAD^ bir önceki commit'i ifade eder:

$ git diff HEAD^ HEAD

Son üç commit'teki değişiklikleri görmek için HEAD~3 gibi notasyonları da kullanabilirsiniz.

Dalları Karşılaştırma

İki dalın uç noktaları arasındaki tüm farkları görmek için aynı sözdizimini kullanın:

$ git diff main feature-branch

Ortak Atadan İtibaren Farkları Görme (Üç Nokta Notasyonu)

Bir dalın, diğer dala kıyasla ne eklediğini (yani ana daldaki değişiklikleri hariç tutarak) görmek için üç nokta (...) notasyonunu kullanmak en yaygın senaryodur (örneğin, bir Pull Request incelemesi yaparken):

$ git diff main...feature-branch

Bu, her iki dalın ortak atası bulunur ve fark, bu atadan feature-branch'in ucuna kadar olan değişiklikler üzerinden hesaplanır.

Belirli Bir Dosyayı Karşılaştırma

Farkları yalnızca tek bir dosyayla sınırlamak için, -- ayırıcısından sonra dosya yolunu belirtin:

$ git diff HEAD~3 HEAD -- src/app/config.py

-- ayırıcısı, Git'e sonraki argümanın bir dal adı değil, bir dosya yolu olduğunu bildirir.

Özet İstatistikleri ile Görüntüleme

Tam satır detayları yerine, hangi dosyaların değiştiğini ve kaç satır eklendiğini/çıkarıldığını görmek için --stat bayrağını kullanın:

$ git diff --staged --stat

Kelime Düzeyinde Farklar

Satır yerine, yalnızca satır içindeki değişen kelimeleri vurgulamak istiyorsanız --word-diff kullanın. Kaldırılan kelimeler [-köşeli parantez-] içinde, eklenenler ise {+süslü parantez+} içinde gösterilir:

$ git diff --word-diff

Hızlı Referans Tablosu

Komut Açıklama
git diff Hazırlanmamış çalışma dizini değişiklikleri
git diff --staged Commit edilmeye hazır hazırlanmış değişiklikler
git diff main...feature feature dalının ana daldan bu yana getirdiği değişiklikler
git diff --stat Değişen dosyaların ve satır sayılarının özeti
git diff -w Tüm boşluk (whitespace) değişikliklerini yoksay

SSS (Sıkça Sorulan Sorular)

git diff ile git diff --staged arasındaki fark nedir?
git diff, çalışma dizininizdeki henüz hazırlanmamış değişiklikleri gösterir. git diff --staged ise git add ile hazırlanmış ve commit'e hazır olan değişiklikleri gösterir. Her ikisini birden görmek için git diff HEAD kullanılır.

git diff main...feature neden git diff main feature'dan farklıdır?
Üç nokta (...) notasyonu, iki dalın ortak atasına göre farkı hesaplar. Bu, ana daldaki son değişiklikleri göz ardı ederek yalnızca feature dalının getirdiği yeni işi izole etmek için kritik öneme sahiptir.

Kaynak

Linuxize