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.