1. ホーム
  2. git

[解決済み] 特定のファイルタイプを除き、特定のフォルダー以下のすべてのファイルを再帰的に正しく無視する。

2022-12-11 15:44:38

質問

似たような質問を見たことがあります ( 1 , 2 3 など)がありますが、それらから適切な解決策を得ることはできません。

私は、特定のファイル タイプを除いて、特定のフォルダーの下のすべてのファイルを無視する必要があります。このフォルダーは、ルート パスのサブディレクトリです。フォルダーの名前を Resources . 物事を複雑にしたくないので、すべてのフォルダーの下のファイルを無視して、名前に Resources という名前のフォルダ以下のファイルを無視するようにします。

これは最も一般的な解決策です(すべての重複した質問で)。

# Ignore everything
*

# Don't ignore directories, so we can recurse into them
!*/

# Don't ignore .gitignore
!.gitignore

# Now exclude our type
!*.foo

この解決策の問題点は 新しく追加されたファイルの追跡を止めてしまう (これは * はすべてのファイルを無視するからです)。私は、すべてのファイル タイプを除外し続けることを望んでいません。私は、新しいファイルが追加された場合、通常の動作が必要です。 git status がそれを表示します。

ようやく解決したのは はこちら . この解決策は、別の .gitignore ファイルを Resources フォルダーに保存します。これは正しく動作します。

1 つの無視ファイルで同じことを実現できますか?私は、異なるディレクトリに多くの無視ファイルを持つことは少し不格好だと思います。

これは私が達成しようとしていることです。

# Ignore everything under Resources folder, not elsewhere
Resources

# Don't ignore directories, so we can recurse into them
!*Resources/

# Now exclude our type
!*.foo

しかし、これは逆の出力を与えます。それは *.foo タイプを無視し、他のファイルを追跡します。

どのように解決するのですか?

SimonBuchanの言うとおりです。

git 1.8.2以降。 Resources/** !Resources/**/*.foo が動作するようになりました。