1. ホーム
  2. git

[解決済み] .gitignore 構文: bin vs bin/ vs. bin/* vs. bin/**.

2023-02-17 09:38:37

質問

を追加することの違いは何ですか? bin , bin/ , bin/*bin/** を .gitignore ファイルに追加してください。私はこれまで bin/ を使っていましたが その他の .gitignoreファイル eclipse ファイル では、二重星と一重星がこんな風に一緒に使われているくらいです。 tmp/**/* なんてのもあります(笑)。最初の2つのパターンも同様に広く使われているようですね。どなたか、この3つの違いを説明していただけませんか?

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

bin は任意のファイルにマッチします。 または bin' という名前のディレクトリにあるすべてのファイルにマッチします。

bin/ は任意の ディレクトリ bin' という名前のディレクトリにマッチします。Git はディレクトリだけを追跡するわけではないので、実質的にはその中身すべてにマッチします。

bin/* は、すべてのファイルとディレクトリに直接マッチします。 bin/ . これは、Git がそのサブディレクトリにあるファイルを自動的に見つけることを防ぎますが、例えば bin/foo サブディレクトリが作成された場合、このルールは になりません。 マッチ foo のコンテンツと一致しない。

bin/** の中の全てのファイルとディレクトリにマッチします。 bin/ ディレクトリとそのサブディレクトリにある全てのファイルとディレクトリにマッチします。

ルールはリポジトリルートに対する相対的なものではなく、以下のように適用されるため、ここでは "any"という単語が重要です。 どこでも を適用するからです。ルールは / (または !/ これはシステムのルートではなく、リポジトリのルートを意味し、意図されたものにのみマッチします。

警告 あなたは 決して のようなルールを使用します。 dir/* , /dir/** などを単独で そのディレクトリの中に存在するものも無視しない限りは . アスタリスクまたは を省略すると、多くのデータを永久に失う可能性があります。 の特定の呼び出しから git gc , git stash などがあります。

をよく知らないのですが tmp/**/* が何をするためのものなのかよくわかりません。のサブディレクトリにあるファイルをマッチさせるために使われるのでは、と最初は思いました。 tmp/ に直接存在するファイルではなく tmp/ 自体に直接存在するファイルではありません。しかし、簡単なテストでは、これは tmp/ .