Git durumu - değişiklikleri yalnızca belirli bir dizinde göstermenin bir yolu var mı?


136

git statusGösterildiği gibi , son işlemden bu yana değiştirilen dosyaların bir listesini görmek istiyorum , ama sadece tek bir dizinde bulunan dosyaları önemsiyorum. Bunu yapmanın bir yolu var mı? Denedim git status <directory>, ama bu tamamen farklı bir şey yapıyor gibi görünüyor ( git add <directory>ilk yazdığımda olduğu gibi, tüm değiştirilen dosyaları listeler ).

Git-status belgeleri, git-commit ile aynı seçenekleri kabul etmesi dışında fazla bir şey söylemez (ancak git-commit'in amacı, değiştirilen dosyaların listelerini göstermek değildir).

Yanıtlar:


199

Dizinin içinden:

git status .

Herhangi bir yolu gerçekten kullanabilirsiniz, bu sözdizimini kullanın:

git status <directoryPath>

Örneğin "my / cool / path / here" yoluna sahip dizin için

git status my/cool/path/here

3
Teşekkürler! Ayrıca, 'git status <directory>' beklediğim şeyi yapıyor gibi görünüyor - dürüstçe onunla daha önce hangi sorunu vardı hatırlamıyorum ... belki farklı bir git sürümünün bir sorun, dunno.
Kuba Suder

Sorun değil ve muhtemelen - git'in yeni sürümleri işleri kolaylaştırıyor gibi görünüyor.
Sam Doidge

3
Evet, davranış kesinlikle 1.6'dan 1.7'ye değiştirildi. 1.7'de OP ihtiyacını karşılar, ancak 1.6 tüm repo boyunca devam eder.
colgur

31

Amacıyla git statusaynı seçenekleri almanın nedeni, geçtiğinizle aynı seçeneklerle iş yaparsanız ne olacağını göstermektir . Bu bakımdan gerçekten .git commitgit statusgit statusgit statusgit commit --preview

İstediğinizi elde etmek için, aşamalı değişiklikleri gösteren bunu yapabilirsiniz:

git diff --stat --cached -- <directory_of_interest>

ve bu, değişmemiş değişiklikleri gösteren:

git diff --stat -- <directory_of_interest>

ya da her ikisini de gösteren:

git diff --stat HEAD -- <directory_of_interest>

2
Git-status gibi yeni oluşturulmuş (izlenmemiş) dosyaları göstermese de bu kısmen işe yarıyor ...
Kuba Suder

Tamam, hangi raporlara ihtiyacın olduğundan emin değildim. Etiketlenmemiş dosyaları kontrol etmeniz gerekiyorsa git ls-files --others <directory_in_question>veya öğesini deneyin ls-files -o.
CB Bailey

git ls-files -ogösterilmeyen dizinlerdeki dosyaları özyinelemeli olarak git statusgösterirken, yalnızca üst düzey dizini gösterir. Ve bir beste zorunda kalacak git diff, git ls-filesçıkış vb kodlama tüm renk yeniden git statuso yerini olacaksa sağlar git status. Ben de buna bir çözüm görmek istiyorum!
Peter V.Mørch


2

Not olarak, git dizinine gitmeden git istatistiklerini kontrol etmeyi basitleştirirseniz;

### dosya oluştur
sudo nano / usr / local / bin / gitstat

### bunu koy

#! / usr / bin / env bash

dir = $ 1

eğer [[$ dir == ""]]; sonra
    echo "Dizin gerekli!"
    çıkış
fi

echo "Git stat '$ dir' için."

git --git-dir = $ dir / .git - iş ağacı = $ dir diff --stat

### exec izni ver
sudo chmod + x / usr / local / bin / gitstat

Ve bu basit bir komut dosyası arayarak: gitstat /path/to/foo-project. Sen ise de kullanabilirsiniz foo-projectsadece yapıyor gitstat .ve böylece daha kısa varsayalım git status -s, git diff --statya git diff --stat HEADsenin hep gui yılların yerine konsolu kullanıyorsanız.

Kredi:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.