Gitステータス-特定のディレクトリのみの変更を表示する方法はありますか?


135

最後のコミット以降に変更されたファイルのリストを表示したいのですgit statusが、私は単一のディレクトリにあるファイルのみに関心があります。これを行う方法はありますか?私が試しましたがgit status <directory>、これは完全に異なる何かをしているようです(git add <directory>最初に書いた場合のように、すべての変更されたファイルをリストします)。

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

回答:


198

ディレクトリ内から:

git status .

実際には任意のパスを使用できます。次の構文を使用します。

git status <directoryPath>

たとえば、パスが「my / cool / path / here」のディレクトリの場合

git status my/cool/path/here

3
ありがとう!また、 'git status <directory>'は私が期待するとおりの動作をしているようです。正直に言って、以前にどのような問題があったのか覚えていません... gitのバージョンが違うのではないでしょうか。
Kuba Suder 2012

問題ありません、そしておそらく-新しいバージョンのgitは物事を簡単にするようです。
Sam Doidge

3
はい、動作は間違いなく1.6から1.7に変更されました。1.7のOP要件を満たしていますが、1.6はリポジトリ全体で継続しています。
colgur 2013

31

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

あなたが望むものを取得するには、段階的な変更を示すこれを行うことができます:

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

これは、ステージングされていない変更を示しています。

git diff --stat -- <directory_of_interest>

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

git diff --stat HEAD -- <directory_of_interest>

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

わかりました。必要なレポートがわかりませんでした。ステージングされていないファイルを確認する必要がある場合は、git ls-files --others <directory_in_question>またはを試してくださいls-files -o
CBベイリー

git ls-files -oステージングされていないディレクトリのファイルを再帰的に表示しますがgit status、最上位のディレクトリのみを表示します。そして、それがの代わりになるかどうかを提供するすべてのカラーコーディングなどを作成git diffgit ls-files出力、再作成git statusする必要がありgit statusます。私も本当にこれの解決策を見たいです!
PeterV.Mørch、2011年

14

最も簡単なソリューション:

  1. ディレクトリに移動します
  2. git status | grep -v '\.\.\/'

もちろん、これは色を破棄します。


必要に応じて、色を元に戻すための変更を加えることができます。例1 例2
カーソン

2

注意として、gitディレクトリに行かずにgit statsを簡単にチェックする場合は、

###ファイルを作成
sudo nano / usr / local / bin / gitstat

###これを入れて

#!/ usr / bin / env bash

dir = $ 1

if [[$ dir == ""]]]; その後
    echo "ディレクトリが必要です!"
    出口
fi

echo "'$ dir'のGit stat。"

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

###実行権限を与える
sudo chmod + x / usr / local / bin / gitstat

そして、その単純なスクリプトを呼び出しますgitstat /path/to/foo-project。あなたは中ながらも、それを使用することができますfoo-projectだけでやっgitstat .ので、より短いと仮定しgit status -sgit diff --statまたはgit diff --stat HEADあなたは、常にGUIのの代わりにコンソールを使用している場合。

クレジット:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.