2009-08-08 10 views
165

binサブディレクトリにあるものを除いて、私のリポジトリ内のすべてのファイルを無視したいと思います。私は私の.gitignoreに以下を追加してみました:サブディレクトリ以外のすべてを無視するようにGitに指示するにはどうすればよいですか?

* 
!bin/* 

しかしこれは、所望の効果を持っていない:私はbin/の内側に新しいファイルを作成しますが、git statusを行うことは、まだnothing to commit (working directory clean)を示しています。

提案がありますか?

+0

[.gitignoreフォルダを除外するが、特定のサブフォルダを含める](http://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include-specific-subfolder) – 1615903

答えて

212

これは、ルートファイルに&ルートディレクトリを無視し、ルートのbinディレクトリをアン無視:

/* 
/*/ 
!/bin/ 

あなたがbinディレクトリのすべてを取得する。この方法をサブディレクトリとそのファイルを含む。いくつかのディレクトリに "MY_SUPER_DUPER_TEMPLATE_directory" 1つのディレクトリexeptのすべてを無視する方法をここで

+13

これは私のために一貫して動作しません。私は '/ stuff /'と '!/ stuff/specific /'という2つの行を持っていますが、まだ/ stuff/specific/ –

+1

@ LBを無視しています - 同様の問題があり、 'git check-ignore -v'私はそれが '〜/ .gitignore'のためでした –

+0

@gurneyalexローカルのリポジトリを削除して再クローンすると、バグでなければならないことがわかりました。 –

36

唯一の問題は、binディレクトリ自体がbin/*パターンと一致しないため、binディレクトリでも表示されないことです。

2つの解決策があります。

.gitignore

* 
!/bin/ 
!bin/* 

または

.gitignore

* 
!/bin/ 

bin/.gitignore

!* 

私はSを好みます最初の解決策がbinと呼ばれていないサブディレクトリにあるbinディレクトリ内のファイルを無視することはなくなります。これはあなたの状況に関係するかもしれません。それだけで、トップレベルのファイルを無視しないであろうすべてのファイルを

/* 
!/public_html 
!/.gitignore 

代わりの無視:

+2

私のために働かなかった。 ...これらのファイル /WP-コンテンツ/ /WP-コンテンツ/プラグイン/ を * '#がすべて を無視 #でもない!:私はそれを動作させるために、このような.gitignoreを持っている必要があります!/ wp-content/plugins/my_plugin/ !/ wp-content/plugins/my_plugin/* ' コメントにブロックコードはありませんか? – xlttj

+1

[タイラーの答え](http://stackoverflow.com/a/8594971/165673)より良いシングルファイルソリューション – Yarin

10

は、私はより良い方法は、スラッシュでパターンを開始することで、トップのgitディレクトリに各パターンを固定することだと思いますあなたが無視したくないディレクトリのもの。

6

私にとってこの.gitignore作品:

*/ 
/* 
!bin/ 
74

構造:/ Bitrixの/テンプレート/ MY_SUPER_DUPER_TEMPLATE_directory

/* 
!/bitrix 
/bitrix/* 
!/bitrix/templates 
/bitrix/templates/* 
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory 
*.DS_Store 
*.gitignore 
+1

これは私のサブディレクトリを解決しました。ありがとう – frostymarvelous

+5

作品です。目の痛いことは何もない? – ed22

+0

これは私が修正したラーバルベンダーのパッケージをunignoringするのに不思議になりました!ありがとう、あなたは私に多くの頭痛 –

41

あなたがへの道上のすべてを除外する必要があります

/* 
!/tsp 
/tsp/* 
!/tsp/src 
/tsp/src/* 
!/tsp/src/*.h 
!/tsp/src/*.cpp 
!/tsp/src/data.txt 
!/.gitignore 
宛先を含める必要があります。

tspディレクトリ以外のすべてを無視し、srcディレクトリ以外のtspディレクトリ内のすべてを無視します。

+9

+1を含むディレクトリの原則のために保存し、その後、そのコンテンツを除いて、希望のサブディレクトリなどを含む私は私のプロジェクトでこの答えを使用して終わった。 –

10

最新のGITバージョンで次のように試してください。

* 
!*/ 
!/path/to/your/dir/** 
+0

実際には/ path/to/your/dir/**が最後の行になるはずです – faham

+0

@faham、ちょっと、ちょっと追加しました。 – Kirby

5

このわかりにくいgitバグを試してください。最初のコメントの前にそれを試してみてください。

!bin**/** 

は、それが:)に役立ちます

サポートドキュメントgit bug sample

PS願っています。公式git docから

9

、例の一つは言う:

例を(* /に注意して、特定のディレクトリfooの/バー以外のすべてを除外するために - スラッシュなしで、ワイルドカードもFOO /バー内のすべてを排除します):

$ cat .gitignore 
# exclude everything except directory foo/bar 
/* 
!/foo 
/foo/* 
!/foo/bar 

スラッシュについての説明は、When to use leading slash in gitignoreです。

関連する問題