Ana içeriğe geç

Git Diff

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/git-diff

Kısaca

Git diff, çalışma dosyaları, stage edilmiş değişiklikler veya commit'ler gibi kodunuzun iki sürümü arasındaki tam satır satır farkları gösteren Git komutudur.

git diff nedir?

git diff, 'tam olarak ne değişti?' sorusunu yanıtlar. Dosyalarınızın iki sürümünü karşılaştırır ve yalnızca farklı olan satırları yazdırır: - ile başlayan satırlar kaldırılmış, + ile başlayan satırlar eklenmiştir; her değişikliğin çevresindeki bağlam (context) adı verilen birkaç değişmemiş satır ise değişikliğin nerede olduğunu gösterir. Bu biçime unified diff denir ve bir pull request'i incelerken gördüğünüz görünümle aynıdır.

Neyin karşılaştırılacağı argümanlara bağlıdır. Düz git diff çalışma dizininizdeki henüz stage etmediğiniz düzenlemeleri, git diff --staged bir sonraki commit'in neyi içereceğini, git diff main feature ise iki branch'in son commit'lerini karşılaştırır. Ayrıca herhangi iki commit'i hash ile karşılaştırabilir, çıktıyı tek bir dosyayla sınırlamak için bir dosya yolu ekleyebilir ya da her dosyada kaç satırın değiştiğinin kısa özeti için --stat kullanabilirsiniz.

Diff, bir kelime işlemcideki değişiklik izleme görünümüne benzer; tüm belge yerine silinenleri ve eklenenleri gösterir. Geliştiriciler işlerini iki kez kontrol etmek için commit'ten önce git diff çalıştırır, kod inceleme araçları inceleyenlerin yeni olana odaklanabilmesi için diff'leri gösterir ve çıktı bir yama dosyası (patch) olarak kaydedilip başka bir yerde git apply ile uygulanabilir.

git diff sıklıkla git status ve git log ile karıştırılır. Status yalnızca hangi dosyaların değiştiğini listeler, log commit'leri listeler, diff ise değişikliklerin içindeki gerçek satırları gösterir. Yaygın bir sürpriz, git add sonrasında düz git diff'in hiçbir şey göstermemesidir: değişiklikler artık stage edilmiştir, bu yüzden onları görmek için git diff --staged gerekir; yepyeni izlenmeyen dosyalar ise düz git diff'te hiç görünmez.

Önemli noktalar

  • git diff satır satır değişiklikleri gösterir; kaldırılan satırlar için -, eklenen satırlar için + kullanılır.
  • Düz git diff stage edilmemiş değişiklikleri gösterir; git diff --staged commit edilecekleri gösterir.
  • Branch'leri, commit'leri ya da tek dosyaları karşılaştırabilirsiniz; --stat her dosyanın değişikliklerini özetler.
  • git diff main...feature, bir branch'in ayrıldığından beri neyi değiştirdiğini, bir pull request'in yaptığı gibi gösterir.
  • Diff'ler kod incelemesinin ve başka yerde uygulanabilen yama dosyalarının temelidir.

Örnek

git diff ile değişiklikleri karşılaştırmakbash
# Unstaged changes in your working directory
git diff

# Staged changes: what the next commit will contain
git diff --staged

# What a feature branch changed since it split from main
git diff main...feature/search --stat

# Sample output for one changed line:
# @@ -12,2 +12,2 @@ function total(items) {
#    const sum = items.reduce((a, b) => a + b, 0);
# -  return sum;
# +  return sum + tax;

Sık sorulan sorular

Git'te stage edilmiş değişiklikleri nasıl görürüm?

git diff --staged ya da eski eş anlamlısı git diff --cached çalıştırın. Düz git diff yalnızca henüz stage edilmemiş değişiklikleri gösterir.

Git'te iki branch nasıl karşılaştırılır?

Son commit'lerini doğrudan karşılaştırmak için git diff branch-a branch-b, branch-b'nin branch-a'dan ayrıldığından beri yalnızca neyi değiştirdiğini görmek için git diff branch-a...branch-b kullanın. Dosya başına özet için --stat, yalnızca dosya adlarını listelemek için --name-only ekleyin.

Bir diff'teki artı ve eksi işaretleri ne anlama gelir?

- ile başlayan satırlar eski sürümde bulunur ama yenisinde yoktur; + ile başlayan satırlar ise yalnızca yeni sürümde bulunur. Değiştirilmiş bir satır, bir silme ve ardından bir ekleme olarak görünür; @@ ile başlayan satırlar ise her değişiklik bloğunun nerede başladığını gösterir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar