2016-07-04 9 views
1

は、私は次のディレクトリ構造を持っている:パターンで始まるもの以外のディレクトリ内のすべてのファイルをどのように削除することができますか?

project 
    modules 
    some-company-foo 
    different-company-bar 
    mycompany-a 
    mycompany-b 
    mycompany-c 

私はmycompanyで始まるものを除いて、モジュール内のすべてのファイルを無視することができますどのように?

git ignore all except subfolderに似ていますが、ワイルドカードを使用しています。私はすべてのmycompany-...フォルダのリストを.gitignoreに維持する必要はありません。

他の回答に基づいて、私は次の内容でmodules/.gitignoreを作成しようとしました:

/* 
# Do not ignore mycompany modules 
!/mycompany* 

そしてmodulesは全くproject/.gitignoreに記載されていません。

しかし、これは機能しません。例えば、

git add /Users/mike/Documents/project/modules/mycompany-faq/questions/somefile.md 

はで失敗:

The following paths are ignored by one of your .gitignore files: 
modules/mycompany-faq/questions/somefile.md 
Use -f if you really want to add them 

私はmycompanyで始まるものを除き、modules内のすべてのファイルを無視することができますどのように?

+0

使用しているGitのバージョンはどれですか?わたしにはできる。 –

+0

'git version 2.7.4(Apple Git-66)' – mikemaccana

+0

@JonathanWakelyあなたのテストのおかげで答えがわかりました - あなたがポイントを得るために、これがそのまま動作しますか?問題の原因となったものを追加します。 – mikemaccana

答えて

-1

On the .gitignore manual

その ファイルの親ディレクトリが除外されている場合は、再インクルードファイルすることはできません。

!/Users/mike/Documents/project/modules/mycompany* 
+1

しかし、OPは_ "とモジュールはproject/.gitignoreに全く言及されていません。 "_ –

+0

彼は/ *を無視します。だから、gitは内部のものを見てスキャンせず、内部にファイルを設計しません。 – blue112

+1

これは 'modules'サブディレクトリにあり、あなたがリンクしているマニュアルには次のように書かれています:_"省略可能な接頭辞 "!"はパターンを否定します; **以前のパターンから除外された一致するファイルは、 _ –

1

が@jonathanwakelyあなた自身の答えを追加し、私が代わりにあなたにポイントをあげるようなので、あなたは、フルパスを指定する必要があります!

configは実際には正しくありました。新しいフォルダで動作した@jonathanwakely's demoのおかげで、実際には正しくなりました。

問題は、上位の.gitignoreファイル(プロジェクトの先頭より上)がmodulesディレクトリを無視していたことです。

私は以前 ~/Documents/.gitignore~/.gitignoreを探したい

が、異なる名前を持つ別の.gitignoreがあるのです。すなわち、.gitignore_globalmodulesディレクトリを無視するように設定された

> git check-ignore -v modules/mycompany-faq/questions/ssl-or-https.md 

/Users/mike/.gitignore_global:28:modules modules/mycompany-foo/somefile.md 

:私はそれを見つけることができました。

関連する問題