2013-09-24 3 views
12

私は.gitattributesに "バイナリ"とマークされたたくさんの自動生成されたソースファイルを持つリポジトリを持っています(誰もがジェネレータツールにアクセスできないのでチェックインされています)。さらに、このリポジトリには、無視されたディレクトリ(やはりビルドプロセスの一部として生成される)に多数のsource-ishファイルがあり、いくつかの実際のバイナリファイル(アイコンなどのリソースファイルはほとんどありません)があります。すべてのテキスト(非バイナリ)ファイルをgitリポジトリにリストする方法は?

ここで、自動生成されていないファイルと無視されていないすべてのファイルをリポジトリで検索したいと思います。私はfindといくつかの除外項目でこれをやっていると思っていましたが、今では十数個の句で厄介なfindというステートメントがあります。 git ls-filesは動作しますが、除外せずにすべてのバイナリファイルを表示します。これをフィルタリングする必要があります。

私は、レポにチェックインされたすべてのファイルを一覧表示する簡単なコマンドがありますか?gitは "テキスト"ファイルを考慮していますか?

答えて

12
git grep --cached -Il '' 

動作するので:

  • -I:空の文字列の一致:線のみ
  • ''と一致しない、一致するファイル名を表示:
  • -lバイナリファイル
  • のパターンと一致しません任意のファイル

forループのはgit ls-filesです。

代わりに、すべてのバイナリファイルを検索します。Find all binary files in git HEAD

免責事項:Cacovskyは同様のコンテンツ、私は、編集ので、ここで:-)

+0

そして 'xargs -0'にパイプするために' -z'オプションがあります。 – raphinesse

0

非無視されたファイルを一覧表示するための標準的な方法がある:あなたが見られるように、

git ls-files --exclude-standard --cached 

しかし、それはすべてバージョン管理ファイルの一覧が表示されます。

あなたが知っているすべてのバイナリを照合するために、別のファイル "exclude_binaries"とexclusion patternを定義することがあります。 find、あまり複雑になり

git ls-files --exclude-standard --cached \ 
--exclude-from=/path/to/`exclude_binaries` 

が、それは非バイナリファイルを一覧表示するには、完全に自動化された方法を提供していません:あなたはまだ特定し、別のパターンファイルでそれらをリストする必要があります。

2

これを達成するための巧妙なハック:送料が含まれているすべての非バイナリファイルを一覧表示することは、私の場合のために

$ git grep --cached -I -l -e $'\r' 

を返し、空の文字列がうまく機能:

$ git grep --cached -I -l -e $'' 

git list binary and/or non-binary files?からそれを取りました。

+1

不要になり、逆転されたオプションのフォーマットを改善し、説明するために、編集しようとしたと言います'$ ''の' $ 'のために、 '' ''はより移植性があります。 –

関連する問題