web-dev-qa-db-ja.com

特定のファイルを無視するのではなく、特定のファイルのみを含めるようにgitに指示する方法はありますか?

私のプログラムは一般に巨大な出力ファイル(〜1 GB)を生成しますが、これはgitリポジトリにバックアップしたくないのです。だからできることの代わりに

git add .

私は次のようなことをしなければなりません

git add *.c *.cc *.f *.F *.C *.h *.cu

少し面倒です...

ディレクトリの内容を.gitignoreにすばやく挿入して、.gitinclude(または類似の名前)ファイルに基づいてファイルを削除できると確信していますが、それは少しハックが多いようです。もっと良い方法はありますか?

145
David Hollman

私はこれを自分で試す必要はありませんでしたが、 [〜#〜] tfm [〜#〜] を読んだことから、否定パターンはあなたが望むことをするように見えます。 .gitignore内のエントリは、後で否定されたエントリで上書きできます。したがって、次のようなことができます。

*.c
!frob_*.c
!custom.c

Custom.cおよび「frob_」で始まるものを除くすべての.cファイルを無視させる

203
T.E.D.

リポジトリに.gitignoreファイルを作成し、cファイルのみを追跡し、他のすべてのファイルを無視して、次の行を追加します。

*
!*.c

「*」はすべてのファイルを無視します

そして!無視されるファイルを無効にします....だから、ここではgitにcファイルを無視しないようにしています...

68

これを達成するための最良のソリューション

作成.gitignoreリポジトリ内のファイルroot、および.c file次に、以下の行を.gitignoreファイル

*.*
!*.c

これにはすべてが含まれます.cディレクトリおよびサブディレクトリからのファイルを再帰的に。

using

*
!*.c

gitのすべてのバージョンでは動作しません。

テスト済み

gitバージョン2.12.2.windows.2

9
Smaranjit

これをgitignoreで使用してください

*.*
!*.c

gitバージョン2.7.4でテスト済み

0
alpha_989