1. ホーム
  2. git

[解決済み] .gitignore で無視される特定のファイルを表示する Git コマンド

2022-03-21 18:22:42

質問

Git を使い始めたところですが、次のような問題があります。

私のプロジェクトのソースツリーです。

/
|
+--src/
+----refs/
+----...
|
+--vendor/
+----...

私のベンダーブランチにコード(現在はMEF)があり、そこでコンパイルしてから、参照を /src/refs プロジェクトがそれらを拾い上げる場所です。

私の問題は、私の .gitignore を無視するように設定されています。 *.dll*.pdb . をすることができるんです。 git add -f bar.dll で、無視されるファイルを強制的に追加するのはいいのですが、問題は、無視されるファイルがどのように存在するかをリストアップする方法がわからないことなのです。

無視されるファイルをリストアップして、追加し忘れがないようにしたいのですが。

のマニュアルページを読みました。 git ls-files が、うまく動作させることができません。どうやら git ls-files --exclude-standard -i は、私が望むことを行う必要があります。 何が足りないのでしょうか?

解決方法は?

注意事項


また、興味深いことに( qwertymk 's 答え ) を使用することもできます。 git check-ignore -v コマンドは、少なくとも Unix では ( は動作しません CMDで ウィンドウズ セッション)

git check-ignore *
git check-ignore -v *

2つ目は、実際のルールが表示される .gitignore これは、git リポジトリで無視されるファイルを作成するものです。
Unixの場合、"を使用します。 カレントディレクトリのすべてのファイルに再帰的に展開するものは? "とbash4+です。

git check-ignore **/*

(または find -exec コマンド)

https://stackoverflow.com/users/351947/Rafi B. を提案します。 コメント欄 になります。 グロブスターを避ける :

git check-ignore -v $(find . -type f -print)

のファイルを必ず除外してください。 .git/ のサブフォルダがあります。

CervEd で提案しています。 コメント を避けるために .git/ :

find . -not -path './.git/*' | git check-ignore --stdin


オリジナルの回答 42009)

git ls-files -i

は動作するはずですが そのソースコード は示す。

if (show_ignored && !exc_given) {
                fprintf(stderr, "%s: --ignored needs some exclude pattern\n",
                        argv[0]);

exc_given ?

の後にもう1つパラメータが必要なことがわかりました。 -i を使えば、実際に何かをリストアップすることができます。

試してみてください。

git ls-files -i --exclude-from=[Path_To_Your_Global].gitignore

(ただし、これではあなたの キャッシュ (無視されない) オブジェクトにフィルタをかけています。)


$ cat .git/ignore
# ignore objects and archives, anywhere in the tree.
*.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git ls-files --ignored \
    --exclude='Documentation/*.[0-9]' \
    --exclude-from=.git/ignore \
    --exclude-per-directory=.gitignore


実は、私の「gitignore」ファイル(「exclude」と呼ばれる)の中に、あなたの助けになるようなコマンドラインがあるんです。

F:\prog\git\test\.git\info>type exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

それで......。

git ls-files --ignored --exclude-from=.git/info/exclude
git ls-files -i --exclude-from=.git/info/exclude

git ls-files --others --ignored --exclude-standard
git ls-files -o -i --exclude-standard

を実行する必要があります。

(ありがとうございます ホンザイデ ご指摘 コメントで その git ls-files -o -i --exclude-from... が行う ではなく キャッシュされたファイルをインクルードする: のみ git ls-files -i --exclude-from... ( なし -o )が行います)。

で述べたように ls-files のマニュアルページ , --others は重要な部分で、キャッシュされていない、コミットされていない、通常は無視されるファイルを表示するためです。

--exclude_standard は、単なるショートカットではなく、その中に すべて 標準の "ignored patterns" の設定です。

<ブロッククオート

exclude-standard
gitの標準的な除外項目を追加します。 .git/info/exclude , .gitignore を各ディレクトリに配置し user's global exclusion file .