2009-04-03 3 views
105

「git status」が示すように、最後のコミット以降に変更されたファイルのリストを見たいですが、私は単一のディレクトリにあるファイルについてしか気にしません。これを行う方法はありますか?私は 'git status <directory>'を試しましたが、これは全く別のことをしているようです(変更されたすべてのファイルがリストされています。 'git add <directory>')。git status - 特定のディレクトリにのみ変更を表示する方法はありますか?

git-statusのドキュメントでは、git-commitと同じオプションを受け入れるという点を除いて、多くのことが分かりませんが(git-commitの目的は変更されたファイルのリストを表示することではありません...) 。

答えて

144

ディレクトリ内から:

git status . 

あなたはこの構文を使用し、実際に任意のパスを使用することができます。

として
git status <directoryPath> 

パスのディレクトリのために例えば、 "私の/クール/パス/ここでは"

git status my/cool/path/here 
+2

ありがとう!また、 'git status 'は、私が期待していたことをしているようだ - 正直なところ、私が以前に持っていた問題を覚えていない。おそらく別のgitバージョンの問題だ。 –

+0

問題はありません。おそらくは、新しいバージョンのgitでは状況が改善されているようです。 –

+1

うん、行動は1.6から1.7に変わった。 1.7でOPの要件を満たしていますが、1.6はレポ全体にわたって継続しています。 – colgur

13

最も簡単な解決策:もちろん

  1. ゴーディレクトリへ
  2. git status | grep -v '\.\.\/'

これは色を破棄します。 git statusgit commitと同じオプションを取ること

+0

はそれを愛します。フリルがない。ヒダが無い。 – redolent

26

理由はgit statusの目的は、あなたがgit statusに渡されたのと同じオプションを犯したらどうなるかを示すためにあるということです。この点に関してgit statusは実際にはgit commit --previewです。

git diff --stat -- <directory_of_interest> 

またはこの両方を示しています:

unstaged変化を示しており、

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

と、この:あなたが望む結果を得るために

、あなたはショーは、変更を上演しているこれを行うことができます

git diff --stat HEAD -- <directory_of_interest> 
+1

git-statusのように、新しく作成された(追跡されていない)ファイルは表示されませんが、これは部分的に動作します... –

+0

OK、何が必要なのか分かりませんでした。あなたがunstagedファイルをチェックする必要がある場合はgitのLS-ファイル--others 'や'は、LS-ファイルが-o' 'てみてください。 –

+0

'git ls-files -o'は、ステージングされていないディレクトリのファイルを再帰的に表示しますが、' git status'は最上位ディレクトリのみを表示します。そして、git diff、 'git ls-files'の出力を作成し、' git status'の代わりに 'git status'が提供するすべての色分けなどを再作成する必要があります。私も本当にこれの解決策を見たいと思います! –

0

gitディレクトリに行くことなくgit statsをチェックするのを単純化すれば、注意してください。

 
### create file 
sudo nano /usr/local/bin/gitstat 

### put this in 

#!/usr/bin/env bash 

dir=$1 

if [[ $dir == "" ]]; then 
    echo "Directory is required!" 
    exit 
fi 

echo "Git stat for '$dir'." 

git --git-dir=$dir/.git --work-tree=$dir diff --stat 

### give exec perm 
sudo chmod +x /usr/local/bin/gitstat 

そして、この単純なスクリプトを呼び出す:gitstat /path/to/foo-projectfoo-projectの中で使用することもできます。gitstat .を実行しているので、guiの代わりに常にコンソールを使用している場合は、git status -s,git diff --statまたはgit diff --stat HEADより短いとします。

クレジット: