24

Git が制御するフォルダー内のバージョン管理されていないファイルのリストを取得するのは、必要以上に面倒です。マニュアルページを読むのが本当に苦手でない限り、Git がこの操作を単独で実行する機能を提供しているようには見えません。

これを実行するよりエレガントな方法があるかもしれませんが、他の誰かが使用する必要がある場合に備えて、このタスクのためにまとめたワンライナーを次に示します。

編集:これを行うには、すでにうまく機能する標準的な方法があることがわかりました。

git ls-files --other [--exclude-standard]
4

3 に答える 3

17

または...

git clean -dnx | cut -c 14-

無視されたファイルを見たくない場合は、

git clean -dn | cut -c 14-
于 2012-11-07T05:22:24.997 に答える
8

実際には、 or オプションを使用するgit cleanと、-norオプションを使用して実行した場合--dry-runに削除された追跡されていないファイルのリストが出力されます。フラグを追加すると、空のディレクトリ、または追跡されていないファイルのみを含むディレクトリが含まれます。-f--force-d

したがって、git リポジトリ内からこのコマンドを実行できます。

$ git clean -dn

そして、次のような出力を取得します。

Would remove dir/untracked_file_1.txt
Would remove untracked_file_2.txt

-Xここにボーナスがあります。フラグを追加すると、無視されたファイルのみがリストされますが、.gitignore ファイルも尊重されます。

于 2012-11-07T05:43:02.370 に答える
0
diff <(echo "`git ls-tree -r master | sed 's/.*\t//g'`") <(echo "`find . -type f`") | grep '> .*' | cut -c 3-
于 2012-11-07T05:00:29.223 に答える