22

「バイナリ」としてマークした多くの自動生成されたソース ファイルを含むリポジトリがあります.gitattributes(すべてのユーザーがジェネレータ ツールにアクセスできるわけではないため、それらはチェックインされています)。さらに、リポジトリには、無視されたディレクトリ (ビルド プロセスの一部として生成される) に多数のソースっぽいファイルと、多数の実際のバイナリ ファイル (アイコンなどの小さなリソース ファイルなど) があります。

自動生成されていない、無視されていないすべてのファイルをレポで見つけたいと思います。find私はこれを一連の除外で行うだけだと思っていましたが、今でfindは1ダースの句を含む恐ろしいステートメントがあります(それでも完全には機能しません)。git ls-files動作しますが、すべてのバイナリ ファイルを区別せずに表示するため、除外する必要があります。

だから、私は疑問に思っています:レポにチェックインされたすべてのファイルをリストしgit、「テキスト」ファイルを考慮する、実行できる簡単なコマンドはありますか?

4

4 に答える 4

28
git grep --cached -Il ''

すべての空でない通常の (シンボリック リンクなし) テキスト ファイルを一覧表示します。

  • -I: バイナリ ファイルのパターンと一致しません
  • -l: 一致するファイル名のみを表示し、一致する行は表示しません
  • '': 空の文字列は、空git grepでないファイルと一致します
  • --cached: で追加されgit addたがまだコミットされていないファイルも検索します (オプション)

または、Git がファイルをバイナリまたはテキストとして処理するかどうかを判断する方法を使用できますか? forループでgit ls-files

TODO 空ファイル。

代わりにすべてのバイナリ ファイルを検索: git HEAD 内のすべてのバイナリ ファイルを検索

このテストリポジトリを使用して Git 2.16.1 でテストされています。

于 2014-06-22T09:55:43.173 に答える
3

これを実現する巧妙なハック: キャリッジ リターンを含むすべての非バイナリ ファイルを一覧表示する

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

私の場合、空の文字列の方がうまく機能します。

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

git list バイナリおよび/または非バイナリ ファイルから取得しましたか? .

于 2014-05-05T18:37:58.703 に答える
0

無視されていないファイルを一覧表示する標準的な方法は次のとおりです。

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

しかし、ご覧のとおり、バージョン管理されたすべてのファイルが一覧表示されます。

回避策の 1 つは、別のファイル " exclude_binaries" で除外パターンを定義して、既知のすべてのバイナリに一致させることです。

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

これはそれほど複雑findではありませんが、非バイナリ ファイルを一覧表示するための完全に自動化された方法を提供するわけではありません。別のパターン ファイルでそれらを識別して一覧表示する必要があります。

于 2013-09-24T05:37:45.620 に答える