1. ホーム
  2. git

[解決済み] どの gitignore ルールが私のファイルを無視しているのか説明してください。

2022-03-15 17:37:27

質問

あるファイルが git によって無視される理由を知る方法はありますか? .gitignore ファイルが無視される原因となっている)?

このような場合(あるいはもっと複雑なシナリオで、何百ものフォルダと何十もの .gitignore ファイルを作成します。

/
-.gitignore
-folder/
    -.gitignore
    -subfolder/
              -.gitignore
              -file.txt

を実行すると git add folder/subfolder/file.txt git はそれを無視すると文句を言うかもしれません。

The following paths are ignored by one of your .gitignore files:
folder/subfolder/file.txt
Use -f if you really want to add them.

を知る方法はありますか? .gitignore には、このファイルを無視するルールがあり、そのルールも表示されますか?みたいな感じです。

The following paths are ignored by your folder/.gitignore file (line 12: *.txt)
folder/subfolder/file.txt
Use -f if you really want to add them.

あるいは、ただ

$ git why-is-ignored folder/subfolder/file.txt
folder/.gitignore:12:*.txt

解決方法は?

git check-ignore -v filename

参照 マニュアルページ をご覧ください。

オリジナルの回答が続きます。

git は現在、このようなものを提供していません。 しかし、あなたの質問を見た後、少しググってみたところ、2009年当時は この機能はリクエストされ、部分的に実装されました。 . このスレッドを読んだ後、私はそれを適切に行うことはそれほど大きな作業ではないことに気づいたので、私はパッチに着手し、一両日中に完成させたいと思っています。 準備ができ次第、この回答を更新します。

UPDATE いやあ、予想以上に大変でしたね。 の中身は git の exclude 処理はかなり不可解です。 とにかく、ここにあるのは アン ほとんど 終了した一連のコミット 今日のアップストリームに適用される master ブランチです。 テストスイートは99%完成していますが、まだ --stdin オプションはまだです。 今週末には何とかして、gitメーリングリストにパッチを投稿したいと思います。

とりあえず、テストが可能な方からのテストは大歓迎です。 私の git フォーク をチェックアウトしてください。 check-ignore ブランチを作成し、通常通りコンパイルしてください。

アップデイト2。 完成しました 最新バージョンは上記の通りgithubにあり、私は パッチシリーズをgitメーリングリストに投稿する ピアレビューのため。 彼らがどう考えるか見てみましょう ...

UPDATE 3: さらに数ヶ月に及ぶハッキング、パッチレビュー、議論、待機の後、私は次のように言うことができることを嬉しく思っています。 この機能は、現在、git の master ブランチ 次のリリース(1.8.2、2013年3月8日予定)で利用可能になる予定です。 以下は check-ignore マニュアルページ . ふぅ、思ったよりずっと大変だった!?

UPDATE 4: この回答がどのように発展し、この機能が実装されるに至ったのか、その全貌に興味がある方は、以下をご覧ください。 GitMinutesポッドキャスト第32話 .