2017-01-10 7 views
1

fooディレクトリには、barbazという2つのファイルがあります。.gitignoreのファイルを除外しないようです。

foo/ 
!foo/baz 

私はそれがないbazを無視すべき除いて、これはfooディレクトリ内のすべてのものを無視することを期待:私は右fooディレクトリ上で、次の.gitignoreファイルを、持っています。

ただし、fooのすべてはまだ無視されています。私はgit check-ignore foo/*を実行すると、私が手:私は間違って何をやっている

foo/bar 
foo/baz 

?特定の製剤は.gitignoreでサポートされていないこと

+0

'foo/*'と '!foo/baz'でなければなりませんか? – karthikr

+0

私はちょうどそれを試み、それは違いはありません。 – JoelFan

+0

心配しないで...今はうまくいきました...まず 'git add foo'をやらなければなりませんでした。 – JoelFan

答えて

2

パターンを否定オプション接頭辞「!」。以前のパターンで一致するファイル が再び含まれます。ファイルの親ディレクトリが である場合、ファイルを再インクルードすることはできません( )。 Gitは性能のために除外されたディレクトリを表示しません そのため、含まれているファイルのパターンは何の意味もなく、 定義されています。リテラル "!"で始まるパターンの場合は、最初の "!"の前にバックスラッシュ( "\")を付けます(例: "\!important!.txt")。

代わりに、あなたが行うことができます:

:: tree 
. 
`-- foo/ 
    |-- bar 
    `-- baz 

:: cat .gitignore 
foo/* 
!foo/baz 

:: git status -sb 
## Initial commit on master 
?? .gitignore 
?? foo/ 

:: git add foo 
:: git status -sb 
## Initial commit on master 
A foo/baz 
?? .gitignore 

注バズが追加されましたが、バーが無視されたこと:あなたがアクションでそれを見ることができるように

foo/* 
!foo/baz 

ここでは例のセッションです。 fooはFOO /バーがまだ存在していても、ここに表示されないことを

:: git reset 
:: rm foo/baz 
:: git status -sb 
## Initial commit on master 
?? .gitignore 

注:

はバズがfooでなかった場合、我々はリセットして、バズを削除することができますどのように見えるか、物事参照してください。

+0

私はそれを試しましたが、違いはありません... check-ignoreからの同じ出力 – JoelFan

+0

これは今働いています...私は 'git add foo'を先に実行しなければなりませんでした。 – JoelFan

+0

あなたは 'add'コマンドを含めるのを忘れました – JoelFan

関連する問題