.gitignore特定のディレクトリではなくディレクトリ内のファイルを除外する


98
application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*

これは機能していないようです。プロジェクトのクローンを作成したときに、"application/cache"フォルダや"application/cache/folder"フォルダなどがありません...

キャッシュフォルダー内のファイルはキャッシュされなかったがフォルダーはキャッシュされ、フォルダーのアクセス許可が転送されて存在するようにしたいのですが。

回答:


220

Gitはフォルダーを追跡せず、ファイルのみを追跡するため、フォルダー内のすべてを無視すると、Gitは追跡する対象がなくなります。あなたは追加することができます.gitignore(各ディレクトリにファイルをapplication/cacheapplication/cache/folderapplication/cache/folder/onemorefolder/以下の内容で):

*
!.gitignore

次に、それらのディレクトリを追加すると.gitignore、各ディレクトリ内のファイルのみが追加されます-これは、ディレクトリが追跡される(つまり、複製時に作成される)ことを意味します。


7
この目的で使用される.gitignoreファイルは空でもかまいません。
kevpie

2
フォルダーが上位.gitignoreファイルによって無視される場合は、空にすることができます。この場合、その正確な私の答え。
KingCrunch

4
より賢明で簡単なのは、.gitkeepという名前のファイルを使用することです。その場合、.gitignoreファイルに何も配置する必要はありません。
ハリネズミ

3
@kevpieフォルダに他のファイルがあり、追跡することを望んでいません。.gitignoreファイルが空の場合、それらのファイルは明らかに追跡されます。
maliayas 2013

同じ目的で、の.gitkeep代わりに使用します.gitignore。それは私にはもっと理にかなっている
エダーソンT.ズラクタ

22

Gitは空のディレクトリを追跡しません。コミットするフォルダーに空のプレースホルダーファイルを追加するだけです。

touch application/cache/.keep
git add -f application/cache/.keep

「空の」フォルダごとにこれを行います。後でこれらのファイルを無視できます。これらのファイルは実際には、gitがクローン上にこれらのディレクトリを作成することを確認するためにのみ存在します。のエントリは.gitignore、フォルダ内の他のファイルが追跡されないようにします(git add -f;)で強制しない限り)。


16

これを行う別のおそらくよりクリーンな方法があります。保持したいフォルダにサブ.gitignoreファイルを置くのではなく、これをルートの.gitignoreに次のように配置できます。

application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*
!*.gitkeep

次に、上記のディレクトリに空の.gitkeepファイルを作成してコミットします。フォルダーはそれらの.gitkeepファイルで追跡されますが、コンテンツは追跡されません。


2
または単に!*.gitkeep:)
エダーソンT.ズラハタ2016

問題は、フォルダーの内容を無視し、フォルダー自体を保持する方法でした。だから私は私の答えが立っていると信じています!!*。gitkeepを持っているだけではフォルダの内容を無視しません
ジョエルダックワース

3

(ミパディが言ったように)それぞれに.gitignoreファイルを置くか、ルートの.gitingnoreファイルにそのようなものを作ることができます

/assets/*/
/assets/*.*

それは私にとってはうまくいきます


これは機能しますが、リポジトリがファイル拡張子を使用している場合のみです。のようなものroot/LICENSE-FILEは除外されません。
Brett Zamir

2

Visual Studioは、受け入れられた答えが気に入らなかった。それを機能させるには、*の前に新しい行を追加する必要がありました。

# Ignore all files in this folder.
*
!.gitignore
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.