141

タイトルのとおり、gitignore ファイルに「ドットのないファイル」を追加することはできますか?

これで、厄介な拡張子のないファイルがすべて処理されると思います。

4

3 に答える 3

158

次のような組み合わせを試すことができます。

*
!/**/
!*.*

そのgitignore除外ルール(否定パターン) は、拡張子を持つファイルを除くすべてのファイルを無視する必要があります。

Mad Physicistが以下で述べたように、ルールは次のとおりです。

そのファイルの親ディレクトリが除外されている場合、ファイルを再インクルードすることはできません。(*)
(*: git 2.?+ で特定の条件が満たされない限り、以下を参照)

そのため!/**/、ファイルをホワイトリストに登録する場合は (親フォルダーを再帰的にホワイトリストに登録する) ことが重要です。

次のような同様のケースで同じルールについて言及しました。


Jakub Narębskiが コメントしているように、すべての拡張子のないファイルを無視したくない場合があります。

私のアドバイス:

  • 最初に重要な拡張子のないファイルを追加します
  • 次に、上記のように編集します.gitignore。既にバージョン管理されているファイルは無視されません (拡張子がなくても)。他のすべては無視されます。

バージョン管理する将来の拡張子のないファイルについては、次のようにします。

git add -f -- myFile

git 2.9.x/2.10 (2016 年半ば?) では、パス re-included にワイルドカードがない場合、そのファイルの親ディレクトリが除外されている場合、ファイルを再インクルードできる可能性があることに注意してください。

Nguyễn Thái Ngọc Duy ( pclouds)はこの機能を追加しようとしています:

ただし、再包含のルールの 1 つは次のとおりでした。

再インクルード ルールのディレクトリ部分は、リテラルである必要があります (つまり、ワイルドカードは使用できません)。

とにかく、これはここでは機能しませんでした。

于 2013-09-26T09:12:06.560 に答える
69
*
!*/
!*.*

*すべてを無視するように git に指示します。

!*/次に、ディレクトリであるすべてを無視しません。これは非常に重要です。

!*.*拡張子を持つすべてのファイルを無視しません。

!*/ルールがないと、名前に が含まれていないディレクトリは一覧.表示されず、必要なファイルはルート フォルダーの外に追加されません。

参考までに、 .gitignore ドキュメントの次の 2 つのセクションを読んでください。

オプションのプレフィックス「!」パターンを否定します。以前のパターンによって除外された一致するファイルは、再び含まれるようになります。そのファイルの親ディレクトリが除外されている場合、ファイルを再インクルードすることはできません。Git はパフォーマンス上の理由から除外されたディレクトリを一覧表示しないため、ファイルがどこで定義されていても、含まれているファイルのパターンは効果がありません。最初の「!」の前にバックスラッシュ (「\」) を付けます。「!important!.txt」など、リテラル「!」で始まるパターン。

パターンがスラッシュで終わる場合、次の説明のために削除されますが、ディレクトリとの一致のみが検出されます。つまり、foo/ はディレクトリ foo とその下のパスに一致しますが、通常のファイルやシンボリック リンク foo には一致しません (これは、Git で一般的に pathspec が機能する方法と一致しています)。

于 2015-07-09T19:17:54.390 に答える