En sık kullanılan en temel git komutlarından biridir. En yalın haliyle git status olarak yazılır. Çoğu geliştiricinin günlük rutininin bir parçasıdır çünkü mevcut durumun hızlı bir özetini verir. Şu anki branch, staged, unstaged, untracked gibi dosyaların durumunu gösterir. Çeşitli parametrelerle çıktı özelleştirilebilir.

Gün içinde commit atmadan önce "ben ne yaptım" dediğinde çalıştıracağın komuttur.

Aldığı parametrelerle çıktı sadeleştirir veya derinleştirir. Bu parametreleri çıktı formatı, detay ve içerik filtreleme ve karşılaştırma ve isim değişikliği başlıkları altında toplamak mümkündür.

A) ÇIKTI FORMATI:

  • --short (kısaca -s): Çıktıda her dosya tek satırdadır. 2 karakterlik kod ile gösterir. Sol karakter staging area, sağ karakter working directory içindir (eğer dosyanın bir kısmı staged area'da bir kısmı değilse ikisi de dolu olabilir). git status -s durum kodları
    Karakter Anlam Nerede görünür
    ' ' Değişiklik yok Sol veya sağ
    M Modified Sol veya sağ
    A Added (eklendi) Sol
    D Deleted (silindi) Sol veya sağ
    R Renamed (yeniden adlandırıldı) Sol
    ? Untracked Her ikisi
    ! Ignored Her ikisi
  • --branch (kısaca -b): Çıktıya branch bilgisi ve uzak sunucudan (upstream) kaç commit geride/ileride bilgisini de ekler. Genelde -sb ile birlikte kullanılır.
    İpucu: Çoğu zaman günlük kullanımda git status -sb kombinasyonuyla kullanılır. Geliştiriciler arasında hem sade bir ekranda hem de dal (branch) durumunu gösterdiğinden popülerdir.
  • --show-stash: Çıktıya kenarda bekleyen kaç tane stash olduğunu da dahil eder.
    Arka planda unutulan stash'leri hatırlatır. Çıktıda Your stash currently has 2 entries gibi bir uyarı çıkarır.

B) DETAY VE İÇERİK:

  • --untracked-files (kısaca -u): Untracked dosyaların gösterim biçimini kontrol eder. Üç modu vardır:

    1. -uno: Untracked dosyaları hiç gösterme
    2. -unormal: (default) sadece untracked klasörlerin isimlerini göster
    3. -uall: klasör içindeki dosyayı tek tek listele

  • --ignored: Normalde .gitignore edilen dosyalar görünmezler. "Bu dosya neden takip edilmiyor" diye sorduğunda kullanırsın.

  • --verbose (kısaca -v): Staged Area'daki değişen dosyaların sadece adlarını değil, dosyaların içeriğini de satır satır metinsel olarak değişikliği gösterir. -vv olarak kullanırsak Unstaged Area'daki dosyaları da dahil eder.

C) KARŞILAŞTIRMA VE İSİM DEĞİŞİKLİĞİ:

  • --ahead-behind / --no-ahead-behind: Yerel dalın takip ettiği uzak dala (upstream) göre kaç commit ileride (ahead) veya geride (behind) olduğunu gösterir/gizler.

İleri seviye karşılaştırma ve isim değişikliği:

  • --find-renames[=n]: Git, silinen + yeni eklenen dosyayı içerik benzerliğine bakarak "rename" olarak tespit edebilir. n benzerlik eşiği, 0-100 arasıdır. Örneğin --find-renames=80 dersen %80 benzer içerik varsa rename sayar. Varsayılan eşik yaklaşık %50.

  • --no-renames: Tam tersi, rename tespitini kapatır. Dosyayı her zaman delete + untracked olarak gösterir.

Parametre Kısayol Ne yapar Sıklık
--short -s Her dosyayı tek satırda, kısa kodlarla gösterir ⭐⭐⭐⭐⭐
--branch -b Branch adı ve upstream farkını gösterir ⭐⭐⭐⭐⭐
--untracked-files -u Untracked dosyaların gösterim modunu belirler ⭐⭐⭐
--show-stash Kenarda bekleyen stash sayısını gösterir ⭐⭐
--ignored .gitignore kapsamındaki dosyaları da listeler ⭐⭐
--verbose -v Staged dosyaların içeriğini satır satır gösterir ⭐⭐
--ahead-behind Upstream'e göre commit farkını gösterir/gizler ⭐⭐
--find-renames Silinen ve eklenen dosyayı rename olarak tespit eder
--no-renames Rename tespitini kapatır

Tüm parametreler için: git status --help

Geliştiricilerin çoğu git status çıktısını okuduktan sonra dosyaları hazırlama ve commit atma adımlarını izler. git add veya git commit ile devam edebilirsiniz.