2012-04-23 33 views
30

有用な.gitignoreファイルのコレクションが https://github.com/github/gitignoreに存在します。すべてが無視するファイルは、拡張子が.gitignoreです。 Java.gitignore、vim.gitignore。これらのファイルをworkdirに直接置くと、うまく動作しません。複数の.gitignoreファイルを使用するためのベストプラクティス

単一のファイル.gitignoreを作成し、それに構成ファイルをマージする必要がありますか?

したがって、--global.gitignoreファイルを使用すると、configは1つのファイルを指しているようです。たとえば、すべて.gitignoreのファイルをグローバル/ディレクトリに適用する場合は、手動で1つのファイルにマージする必要がありますか?もしそうなら、この合併されたファイルを「公式」コレクションで最新の状態に保つのは特別な作業です。

もう一度言いますと、別のディレクトリに異なる.gitignoreファイルを使用することができますが、私が望むものではありません。私は単一のディレクトリに複数のファイル.gitignoreを適用したいと思います。 .gitignore


と呼ばれているgitignoreファイルプロジェクトが背景:明確にするために

答えて

30

.gitignoreが持つディレクトリの最上位レベルまたは子孫のいずれかである、それは内のディレクトリを指し.gitリポジトリ、すなわち ".git /"ディレクトリ。

例えば、そこ任意のサブディレクトリ内の複数の.gitignoreファイルであるが、ベストプラクティスは、与えられたプロジェクトのルートに .gitignoreを持っており、必要に応じてそのファイル参照のサブディレクトリを持つことであることができますimages/yearly/recentそうでなければ、無視されているものを見つけるために "which" .gitignoreファイルを知ることは難しいでしょう。あなたがパターンをファイル名として使用することができれば、それはかなり難しいかもしれません!

は、私はまた、あなたが新しいプロジェクトで使用するための周りにテンプレートを保つかもしれませんがは、あなたのマシン上のすべてののプロジェクトに適用されるグローバル.gitignoreファイルを使用してを避けることをお勧めします。主な考慮点は、.gitignoreが他の開発者(存在する場合と存在しない場合があります)とは異なるため、結果が不確定であることです。これの例外の1つの例は、私が自分のマシンで開いているプロジェクトでは望まないIDEファイル用にグローバル.gitignoreファイルを使用することです。グローバルの.gitigoreに.idea/files(rubyMine)のエントリを使用します。


あなたが一覧表示されたテンプレートの意図は、通常、あなたが特定の言語で与えられたファイルためのコードを書いているということです。これを考えると、言語に基づいたテンプレートで十分であることがよくあります。

コードベースで複数の言語がある場合、使用される次のような多くの方法で行うことができ、これらの言語のための複数の.gitignoreさんを結合する必要があります。

cat .gitignore1 .gitignore2 > .gitignore # if .gitignore doesn't exist yet 
cat .gitignore1 >> .gitignore # Add to it if it already exists 
paste .gitignore1 .gitignore # Add to it if it already exists 

プレスオフ(ish)オフ(2014年夏):

Gitignorerは.gitignoreファイルの作成を支援するシンプルなユーティリティです。それは、githubのgitignoreテンプレートをgithub.com/github/gitignoreから除外する共通のファイルとともに引き出し、それらをまとめてカレントディレクトリの.gitignoreに保存します。

使用例:

gitignorer create c java python 

Gitignorerはイエス、あなたが手動でコピーする必要があります...だから、本質的にhttps://github.com/zachlatta/gitignorer


+10

https://aur.archlinux.org/packages/gitignorer/でとGitHubの上のオーバーAURで現在入手可能です/ペースト1つのファイルにまとめます。 (私はこの答えを誤解していない限り)。 –

+2

合意しましたが、いくつかの用語を指定する必要があると感じています。 GLOBAL(クロスリポジトリ).gitignoreとプロジェクトルート.gitignore(1つのリポジトリ内のすべてのファイルに適用)の違いについて話しています。プロジェクトルートのアプローチは私にとっても一番効果的でした。必要に応じてあるプロジェクトから別のプロジェクトにエントリをコピーします。グローバルなgitignoreは、混乱を引き起こす可能性が非常に高いようです。 – moodboom

+0

は、分かりやすくするためにもう少し情報を追加しました。 –

関連する問題