Kurs
Karmaşık bir Git projesinde çalışırken, hangi dosyaların değiştirildiğini, hangilerinin sahnelendiğini (staged) ya da hangilerinin izlenmediğini (untracked) takip etmek kolay değildir. İşte burada git status devreye girer. Bu temel Git komutu, bir deponun mevcut durumunun net ve kapsamlı bir anlık görüntüsünü sunar—hangi dosyaların değiştiğini, hangilerinin commit etmeye hazır olduğunu ve hangilerinin hâlâ ilgi gerektirdiğini vurgular.
İster birleştirme (merge) çatışmalarını çözüyor olun, ister sahnelenmiş değişiklikleri gözden geçiriyor olun ya da commit öncesinde hiçbir şeyin geride kalmadığından emin olmak isteyin, git status düzenli kalmak için gerekli görünürlüğü sunar.
Bu yazıda, git status çıktısının her bölümünü açıklayacak ve gelişmiş özelleştirmeleri ele alarak sürüm kontrolü iş akışınız üzerinde daha iyi kontrol sağlamanıza yardımcı olacağım.
Git Status nedir?
git status komutu, Git deponuzun gerçek zamanlı bir özetini sağlar. Özellikle, çalışma dizinini (yerel dosyalarınız) ve hazırlama alanını (index olarak da bilinir) son commit anlık görüntüsüyle karşılaştırır. Bu sayede hangi dosyaların değiştirildiğini, hangi değişikliklerin sahnelenip commit etmeye hazır olduğunu ve hangi yeni dosyaların izlenmediğini görebilirsiniz.
git status çalıştırarak, geliştiriciler doğru değişikliklerin sahnelendiğini veya commit edildiğini doğrulayabilir, gözden kaçan düzenlemeleri yakalayabilir ve eksik güncellemeleri projenize sokmaktan kaçınabilir. Bu, özellikle birden fazla dalı yönetirken veya birleştirme çatışmalarını çözerken değerlidir; çünkü Git’in neyi izlediğine ve neyi izlemediğine dair kesin geri bildirim verir.
git status’un çalışma ağacı, hazırlama alanı ve depo geçmişi arasındaki etkileşimi nasıl yansıttığını anlamak, Git’i etkili kullanmanın ve yaygın hatalardan kaçınmanın anahtarıdır.

Yukarıdaki diyagram, çalışma dizini, hazırlama alanı ve depo (commit geçmişi) arasındaki ilişkiyi ve git status’un bu yapıda nasıl konumlandığını gösterir:
- Sahneye alınmamış değişiklikler (çalışma dizininizde değiştirilmiş dosyalar) “Changes not staged for commit” olarak görünür.
- Sahneye alınmış değişiklikler (
git addile index’e eklenen dosyalar) “Changes to be committed” olarak görünür. - İzlenmeyen dosyalar (Git’in daha önce görmediği yeni dosyalar) da listelenir; bunları eklemeniz veya yok saymanız istenir.
- Birleştirme ortasındaysanız,
git statusçatışmalar hakkında da bilgi verir ve sonraki adımları söyler.
Örnek git status çıktısı:
$ git status
On branch feature/login
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: src/auth.js
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/utils.js
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/new-feature.js
Sürüm kontrolünde Git’in yeri ve genel resmi için bu kapsamlı Git rehberine göz atın.
Git Status Nasıl Kullanılır
İşte iş akışınızda git status’tan etkili biçimde yararlanmanız için adım adım bir yaklaşım.
Henüz Git’i yapılandırmadıysanız, bu kurulum rehberi farklı sistemlerde kurulum ve ilk yapılandırma adımlarında size yol gösterir.
git status’un temel kullanımı
- Terminalinizi açın:
Tercih ettiğiniz terminali veya komut satırı arayüzünü kullanın. Bu, Git komutlarını doğrudan çalıştırmanıza ve deponuzun durumunu gerçek zamanlı görmenize olanak tanır.
- Proje dizininize gidin:
Git projenizin bulunduğu klasöre geçmek için cd komutunu kullanın.
cd /path/to/your/project
git statusçalıştırın:
Proje dizininize girdikten sonra aşağıdaki komutu çalıştırın.
git status
Daha önce gördüğümüz gibi, Git genellikle şu bilgileri içeren bir çıktı döndürür:
- Geçerli dal adı.
- Commit etmeye hazır sahnelenmiş değişikliklerin listesi.
- Değiştirilmiş ancak sahnelenmemiş dosyaların listesi.
- Herhangi bir izlenmeyen dosya—henüz Git’e eklenmemiş yeni dosyalar.
Kısa formatı kullanma
Ek ayrıntı olmadan hızlı bir anlık görüntüye ihtiyacınız varsa, kısa format tam size göre:
git status --short
Bu özlü görünüm, her dosyayı durum sembolleriyle tek satırda listeler; özellikle belirli bir değişikliği tararken veya bu komutu bir betiğe entegre ederken kullanışlıdır.
Örnek çıktı:
M index.html
A new-script.js
?? temp.txt
Çıktıyı yorumlama:
- İlk karakter, hazırlama alanı durumunu gösterir.
- İkinci karakter, çalışma dizini durumunu gösterir.
|
Kod |
Anlamı |
|
M |
Değiştirildi |
|
A |
Eklendi |
|
D |
Silindi |
|
?? |
İzlenmeyen dosya |
|
MM |
Her iki aşamada da değiştirildi |
|
AM |
Eklendi, sonra değiştirildi |
git status’ta -u seçeneğini anlamak
-u seçeneği (--untracked-files’ın kısaltması), izlenmeyen dosyaların çıktınızda nasıl görüntüleneceğini kontrol etmenizi sağlar; bu, çok sayıda üretilen dosyanın bulunduğu projelerde önemli olabilir. Her modun anlamı şöyledir:
normal(varsayılan)
İzlenmeyen dosyaları standart, alan açısından verimli bir formatta gösterir.
Örnek:
git status -u normal
Bu, çoğu geliştiricinin git status çalıştırdığında gördüğü standart davranıştır.
all
Varsayılan olarak yok sayılanlar da dahil olmak üzere tüm izlenmeyen dosyaları listeler.
Örnek:
git status -u all
Bu mod tam görünürlük sağlar; dosya üretim sorunlarını ayıklarken veya .gitignore ile hariç tutulanları gözden geçirirken yararlı olabilir.
-
no
İzlenmeyen dosyaları gizleyerek yalnızca Git tarafından zaten izlenen dosyalardaki değişikliklere odaklanmanızı sağlar.
Örnek:
git status -u no
Daha büyük projelerimden birinde—kapsamlı bir derleme sürecine sahip bir Node.js uygulaması—git status çıktısı geçici dosyalar, önbellekler ve derleme çıktılarıyla doluydu. -u no seçeneğini eklemek, geçici veya otomatik oluşturulan dosyaların dikkat dağıtıcı etkisi olmadan yalnızca izlenen dosya değişikliklerine odaklanmamı sağladı.
--porcelain ile çıktıyı özelleştirme
Betik yazma veya otomasyon görevleri için öngörülebilir çıktı esastır. --porcelain seçeneği, özel araçlarınızda veya CI/CD iş akışlarında kullanım için ideal olan temiz, kararlı ve makine tarafından okunabilir bir git status formatı sunar:
git status --porcelain
Bu mod, kısa formatı (--short) taklit eder ancak Git sürümleri ve yapılandırmaları arasında tutarlı çıktı garanti eder. Varsayılan git status kullanıcı ayarlarına bağlı olarak fazladan satır sonları, ipuçları veya renk içerebilirken, --porcelain bu tür biçimlendirmeleri tamamen kaldırır—betiklerin çıktıyı güvenle ayrıştırabilmesini sağlar.
Git Status Çalıştırdıktan Sonraki Adımlar
git status çalıştırıp çıktıyı analiz ettikten sonra sıradaki adımınıza karar verme zamanı—dosyaları sahnelemek, güncellemeleri commit etmek veya çalışma dizininizi temizlemek olabilir. İşte nasıl ilerleyeceğiniz.
Commit için dosyaları sahnelemek
Sahneleme, değişikliklerinizi bir sonraki commit’e dahil edilmek üzere hazırlar. Tek tek dosyaları sahneleyebilir veya hepsini bir kerede ekleyebilirsiniz.
- Belirli bir dosyayı sahneleyin:
Commit edilecek içeriği hassas biçimde kontrol etmek istediğinizde kullanın.
git add <file-name>
- Tüm değişiklikleri sahneleyin:
Bu, mevcut dizindeki değiştirilmiş ve yeni eklenmiş dosyaları içerir.
git add .
- Yalnızca izlenen dosya değişikliklerini sahneleyin (yeni izlenmeyen dosyalar hariç):
git add -u
İstenmeyen dosyaları yanlışlıkla dahil etmemek için sahneleme öncesinde git status veya git diff ile değişiklikleri dikkatle gözden geçirmenizi öneririm. git diff komutuyla git status’u birlikte kullanmak, dosyalarınızdaki değişikliklere dair daha derin içgörüler sunar.
Değişiklikleri commit etmek
Değişikliklerinizi sahneledikten sonra sıradaki adım bir commit oluşturmaktır. Açık ve açıklayıcı bir commit mesajı yalnızca neyin değiştiğini değil, aynı zamanda bu değişikliğin neden yapıldığını da kaydeder—böylece zaman içinde projenin geçmişini anlamayı kolaylaştırır.
git commit -m "Describe your changes here"
Commit mesajları için en iyi uygulamalar:
- Emir kipini kullanın (ör. “Giriş hatasını düzelt”, “Giriş hatası düzeltildi” değil).
- Özet satırını mümkün olduğunca 50 karakterin altında tutun.
- Gerekirse, çok satırlı bir mesaj kullanın (
git commit’i-molmadan çalıştırarak) ve özet ile ayrıntılı açıklamayı ayırın.
Anlamlı bir commit mesajı yazmak için fazladan bir dakika ayırmanın, sonraki inceleme ya da hata ayıklama oturumlarında sayısız saat kazandırabileceğini öğrendim. Değişiklikleriniz gözden geçirildikten sonra, commit’lerinizi birleştirmeyi (squash) düşünerek Git geçmişinizi temizleyin.
İzlenmeyen dosyaları yönetme
İzlenmeyen dosyalar, özellikle derleme çıktıları, günlükler veya bağımlılık dizinleri olan projelerde git status çıktınızı kalabalıklaştırabilir. Asla izlemeyi düşünmediğiniz dosya veya dizinler varsa, deponuzun kökünde bir .gitignore dosyasına bunları ekleyerek hariç tutabilirsiniz.
# Ignore dependency folders and log files
node_modules/
*.log
# Ignore system files
.DS_Store
Thumbs.db
Bu, deponuzda yalnızca ilgili dosyaların yer almasını sağlar; git status çıktısını temiz ve odaklı tutar. Çalışma dizininizde kalmış izlenmeyen dosyaları kaldırmanız gerektiğinde git clean da ilgi çekici bir araçtır.
Durumu düzenli olarak gözden geçirme
git status’u sık çalıştırmak, temiz ve kontrollü bir geliştirme iş akışını korumaya yardımcı olan basit ama güçlü bir alışkanlıktır. Özellikle commit’lerden, dal değiştirmelerinden veya birleştirmelerden önce çalışma dizininizin ve hazırlama alanınızın durumunu düzenli aralıklarla kontrol ederek, eksik değişiklikleri commit etmek veya izlenmeyen dosyaları gözden kaçırmak gibi yaygın hatalardan kaçınabilirsiniz.
Ben artık bu adımı günlük rutinime dahil ediyorum; commit geçmişimdeki hataları belirgin şekilde azalttı.
Yaygın Git Status Sorunlarını Giderme
Basitliğine rağmen, bazen git status bunaltıcı veya kafa karıştırıcı bilgiler üretebilir. İşte birkaç yaygın sorun ve bunlarla nasıl başa çıkılacağı.
İstenmeyen izlenmeyen dosyalar
Büyük projelerde, özellikle çeşitli derleme araçları kullananlarda, aslında izlemek istemediğiniz birçok dosya görebilirsiniz. Bunlar görünüyorsa, .gitignore ayarlarınızı doğrulayın ve gerekirse aşağıdakini kullanarak izlemeyi kaldırın:
git rm --cached <file-name>
.gitignore’ınızı güncelledikten ve git rm --cached kullandıktan sonra, dosyanın artık izlenmediğini veya gereksiz yere görünmediğini doğrulamak için tekrar git status çalıştırın.
Bunaltıcı çıktı
Çok sayıda dosyası olan projelerde—özellikle günlükler, önbellekler veya geçici varlıklar üretenlerde—git status çıktısı gürültülü ve taraması zor olabilir. Bu da ilgi gerektiren anlamlı değişikliklere odaklanmayı güçleştirir.
Bu durumda, her dosya için tek satırlık özlü bir özet görüntüleyebilirsiniz:
git status --short
Veya izlenmeyen dosyaları tamamen gizleyin:
git status -u no
Birlikte kullanıldığında bu seçenekler, özellikle daha büyük kod tabanlarında veya otomatik iş akışlarında git status’u daha odaklı ve sindirilebilir kılar.
Sonuç
Özetle, git status deponuzun sağlığına gerçek zamanlı bir pencere sunan vazgeçilmez bir araçtır. Varsayılan görünümünü, kısa formatını ve -u bayrağı gibi gelişmiş seçenekleri ustalıkla kullanarak Git iş akışınızı sadeleştirebilir ve yaygın tuzaklardan kaçınabilirsiniz. Bu modları projelerinizde deneyin ve değişiklikleri yönetmedeki netliğin geliştirme sürecinizi nasıl hızlandırdığını gözlemleyin.
Git’te yeniyseniz, git status’u anlamak, depoları başlatan komut olan git init ile eşleştirildiğinde daha da güçlü olur. Henüz yapmadıysanız, Git Init Eğitimime göz atarak sıfırdan bir depo kurmayı öğrenin.
Git becerilerinizi daha da derinleştirmeye hevesliyseniz, şu DataCamp kurslarını inceleyin:
- Intermediate Git – Dallandırma, birleştirme ve çatışma çözümü teknikleriyle becerilerinizi geliştirin.
- GitHub Foundations – İşbirlikçi projeler için Git’i GitHub ile nasıl entegre edeceğinizi öğrenin.
İyi kodlamalar—ve deponuzla her daim kusursuz uyum içinde kalmanıza!
SSS
git status, git diff’ten nasıl farklıdır?
git status değişikliklerin özetini gösterirken, git diff dosyalar arasındaki gerçek içerik farklarını göstererek daha ayrıntılı bir karşılaştırma sunar.
git status çıktısını özelleştirebilir miyim?
Evet, --short, --porcelain ve -u gibi seçeneklerle çıktıyı ihtiyaçlarınıza göre daha öz veya betik dostu olacak şekilde uyarlayabilirsiniz.
Git’te sahnelenmiş ve sahnelenmemiş değişiklik arasındaki fark nedir?
Sahneye alınmış değişiklikler index’e eklenmiş ve commit etmeye hazırdır; sahnelenmemiş değişiklikler ise hâlâ çalışma dizinindedir ve commit için işaretlenmemiştir.
git status’ta görünen dosyaları nasıl yok sayarım?
git status’ta izlenmeyen olarak görünmelerini engellemek için belirli dosya kalıplarını .gitignore dosyasına ekleyebilirsiniz (ör. günlükler veya derleme çıktıları).
İzlenmeyen dosyalar neden git status’ta görünmeye devam ediyor?
İzlenmeyen dosyalar, Git index’ine eklenmemiş dosyalardır. .gitignore’da açıkça yok sayılmadıkça veya git add ile sahnelenmedikçe görünmeye devam edebilirler.
git status kötü commit’leri önlemeye nasıl yardımcı olur?
Commit etmeden önce git status çalıştırarak sahnelenmiş ve sahnelenmemiş tüm değişiklikleri gözden geçirebilir, dosyaları kaçırmaktan veya eksik bir şeyi yanlışlıkla commit etmekten kaçınabilirsiniz.
git status, birleştirme çatışmalarını çözmede yararlı mıdır?
Kesinlikle. git status çatışmaları vurgular ve birleştirmeyi tamamlamadan önce bunları nasıl çözeceğinize dair rehberlik eder.
İş akışımda git status’u ne sıklıkla kullanmalıyım?
Sık sık! Sahneleme, commit etme veya dal değiştirme öncesinde git status kullanmak düzenli kalmanıza ve maliyetli hatalardan kaçınmanıza yardımcı olur.
Veri hatları, bulut ve YZ araçları üzerinde çalışan; aynı zamanda DataCamp ve gelişmekte olan geliştiriciler için pratik, yüksek etkili eğiticiler yazan bir veri mühendisi ve topluluk inşacısıyım.

