web-dev-qa-db-ja.com

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

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

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

129
Kuba Suder

ディレクトリ内から:

git status .

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

git status <directoryPath>

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

git status my/cool/path/here
184
Sam Doidge

git statusgit 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>
30
CB Bailey

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

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

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

13
Can Berk Güder

注として、gitディレクトリに移動せずにgitの統計情報を簡単に確認できる場合、

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

###これを
 
#!/ usr/bin/env bash 
 
 dir = $ 1 
 
 if [[$ dir == ""]]; then 
 echo "ディレクトリが必要です!" 
 exit 
 fi 
 
 echo "Git stat for '$ dir'。" 
 
 git --git-dir = $ dir/.git --work-tree = $ dir diff --stat 
 
 ### exec perm 
 sudo chmod + x /usr/local/bin/gitstat

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

クレジット:

2
K-Gun