タイトルが言うように、gitignoreファイルに「ドットのないファイル」を追加することは可能ですか?
これで、これらの煩わしい拡張子のないファイルがすべて処理されると思います。
タイトルが言うように、gitignoreファイルに「ドットのないファイル」を追加することは可能ですか?
これで、これらの煩わしい拡張子のないファイルがすべて処理されると思います。
回答:
次のような組み合わせを試すことができます。
*
!/**/
!*.*
このgitignore
除外ルール(否定パターン)では、拡張子のあるファイルを除くすべてのファイルを無視する必要があります。
前述のように、以下のことでマッド物理学者、ルールは次のとおりです。
そのファイルの親ディレクトリが除外されている場合、ファイルを再インクルードすることはできません。(*
)
(*
:git 2.?+で特定の条件が満たされていない限り、以下を参照)
そのため!/**/
、ファイルをホワイトリストに登録する場合は、親フォルダーを再帰的にホワイトリストに登録することが重要です。
私は同じルールを次のような同様のケースで述べました:
以下のようヤクブNarębskiの コメント、あなたは無視したくない場合がありますすべての拡張子のファイルを。
私のアドバイス:
.gitignore
上記のように編集します。既にバージョン管理されているファイルは無視されません(拡張子がない場合でも)。他のすべては無視されます。バージョン管理したい将来の拡張子のないファイルの場合:
git add -f -- myFile
git 2.9.x / 2.10(2016年半ば?)では、再インクルードされたパスにワイルドカードがない場合、そのファイルの親ディレクトリが除外されていれば、ファイルを再インクルードできる可能性があることに注意してください。
NguyễnTháiNgọcDuy(pclouds
)がこの機能を追加しようとしています:
ただし、再包含のルールの1つは次のとおりでした。
再組み込みルールのディレクトリ部分は、リテラルでなければなりません(つまり、ワイルドカードは使用できません)。
これはとにかくここではうまくいかなかったでしょう。
.gitignore
だろう**
と!**.*
。アスタリスクが前に配置されている場合、これは違いを生じないことはわかっていますが、シェルがワイルドカードを処理する方法でより明確で適切です...
!Makefile
。Git 1.7.1ではこのソリューションで問題が発生しましたが、1.9.0では問題なく機能したことに注意してください。私の場合、ルートディレクトリにファイルを追加しても問題はありませんでしたが、サブディレクトリ内に拡張子が付いたファイルを追加すると、無視されるように表示されました。これは、1.7.1 **
がまだパターンをサポートしていないためと思われます。ここを参照してください!
**
Gitで追加されました1.8.2
。の!*/
代わりに使用することに不利な点はあります!/**/
か?
*
!*/
!*.*
*
すべてを無視するようにgitに指示します。
!*/
次に、ディレクトリであるものをすべて無視します。これは非常に重要です。
!*.*
拡張子を持つすべてのファイルを無視します。
なければ!*/
、ルール、なしのディレクトリ.
名には表示されませんと、ご希望のファイルのどれも、ルートフォルダの外に追加されないであろう。
参考として、.gitignoreドキュメントの次の2つのセクションを読んでください。
オプションの接頭辞「!」これはパターンを無効にします。以前のパターンによって除外された一致ファイルは、再び含まれます。そのファイルの親ディレクトリが除外されている場合、ファイルを再インクルードすることはできません。Gitはパフォーマンス上の理由で除外されたディレクトリをリストしません。そのため、含まれているファイルのパターンは、それらが定義されている場所に関係なく、効果がありません。最初の "!"の前にバックスラッシュ( "\")を置きます たとえば、「!important!.txt」など、リテラル「!」で始まるパターンの場合。
パターンがスラッシュで終わっている場合は、以下の説明のために削除されますが、一致するのはディレクトリのみです。つまり、foo /は、ディレクトリfooおよびその下のパスと一致しますが、通常のファイルまたはシンボリックリンクfooとは一致しません(これは、Gitでのpathspecの一般的な動作方法と一致します)。
私のフォルダには、*.c, *.h, *.txt, *.csv
拡張子がetc. のファイルや拡張子のないバイナリファイルがたくさんあります。だから私はすべてのファイルexecpt *.c,*.h
とを無視する必要があった.gitignore
ので、.gitignore
例からこれは私にとってはうまくいきます:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README
、LICENSE
またはCOPYING
、INSTALL
、Makefile
など、あなたがいつでもできますが、それらを強制的に追加し、それらが追跡される