Androidスタジオ-.ideaディレクトリ全体をgit ignoreに配置する必要がありますか?


137

AndroidStudioの.gitignoreファイルの例をたくさん見ましたが、中には含まれているものと、含まれていないものがあります。.idea

.ideaディレクトリ全体を.gitignoreに追加しない理由はありますか?

完全に無視すべきではない場合、.idea内に(.imlなどの).gitignoreにある特定のファイルがありますか?


.idea下の一部のファイルを除いて無視します.idea/runConfigurations/
Daniel

回答:


104

このページをご覧ください。

プロジェクト構成ファイルに関するIntelliJドキュメント

「ディレクトリベースのフォーマット」では、特定の行が興味深いです:

.ideaディレクトリには、一連の構成ファイル(.xml)が含まれています。各ファイルは、ファイルの名前に反映されている特定の機能領域に関連するコンフィギュレーションデータの一部のみが含まれ、例えば、compiler.xmlencodings.xmlmodules.xml

ほとんどすべてのファイルには、コンポーネントモジュールの名前と場所、コンパイラ設定など、プロジェクト自体の中核となる情報が含まれています。したがって、これらのファイルはバージョン管理下に置くことができます(また、すべきです)。

ただし、プロジェクトをIDE依存にするために適切にHATEしています(現在、NetBeansで作成されたプロジェクトに取り組んでおり、会社の標準となるEclipseでそれを使用するのは面倒です)。

だから、あなたの質問に答えるには:

  1. 依存関係の管理とビルドにMavenやGradleなどを使用ない場合:ディレクトリをバージョン管理下に置いてください。このようにして、プロジェクトと依存関係の正しい構成を誰でも利用できるようになります。カウンターパートでは、すべての開発者が、構成ファイルで定義するのとまったく同じ方法で環境を設定する必要があります。
  2. MavenやGradleなどを使用する場合:これらのツールを正しく構成し、ディレクトリをバージョン管理下に置かないください。実際には、設定ファイル内に含まれるすべての情報は、Maven / Gradleファイルに保存する必要があります。次に、開発者が環境に応じてIDEを構成できるようにします。このようにして、Eclipse、IntelliJ、Linux、Windowsを使用することはもう問題ではなくなります。

9
ただし、次の段落に注意してください。「例外は、workspace.xmlファイルです。これには、個人設定が保存されます...したがって、このファイルを同僚と共有することはほとんどありません。」
Dalbergia

40

はい、「はい」と「いいえ」の回答の後に、「はい」と「いいえ」の回答を追加しています:)

問題は、.ideaプロジェクトのビルド構成(依存関係の宣言)とプロジェクトの設定(検査など)の両方に使用されることです。

ビルド構成にIDEを使用したくないのは確かですが、チーム間で設定を共有したい場合があります。あなただけ無視の一部する必要があるのはそういうわけです.idea(のようなコンテンツlibrariesフォルダおよびmodules.xmlファイル)が、バージョンコントロールで他人を保つ(例えばcopyrightdictionariesおよびinspectionProfilesフォルダやファイルの下.ideaのようなdynamic.xmlcodeStyleSettings.xmlなど)。


具体的にどのようにimlファイルに対処しますか?
2014年

1
imlファイルは必ず無視してください。
JBaruch 2014年

1
IDEに依存するファイルに構成を保持するべきではないので、Maven / Gradleを使用するほうがよいと私はまだ考えています。
ミスロップ2014年

@mithrop問題は、Maven / Gradleファイルでこのタイプの構成を宣言することはできません。これはIdea独自の形式であり、Maven / Gradleに移植可能な代替手段はありません。
JBaruch 2014年

ああ、そうだね。とにかく、それをmaven / gradleファイルに入れられない場合、次にプロジェクトを別のIDEにインポートするときに問題が発生します(これは私が処理したくない問題です)。しかし、私はあなたに完全に同意します(私の答えを読むと、私は本当にそうであることがわかります):ファイルを含めるか、ニーズに応じて含めないか:)
mithrop

7

VCでプロジェクト構成を維持するという概念は有効です。私のチームでこれを行ったのは、すべての開発者がたまたまPHPStormをプロジェクトに使用していたため、共通の構成を概念的に維持することが理にかなっているためです。同じ辞書ファイル、同じコーディング標準ルール、同じプラグイン構成を使用したいと考えました。

これを「概念的」と見なした理由は、JetBrainsの.ideaフォルダーに問題があり、使用できなくなったためです。これらはおそらく回避または修正された可能性のある問題でしたが、それを正しく行う方法はわかりませんでした。JetBrainsのせいだと思います。 IDEは正しく動作します。

とはいえ、問題は次のとおりでした。

  • プロジェクトフォルダのシンボリックリンクが正しく機能しません。プロジェクトをセットアップするとき、ホームディレクトリにシンボリックリンクします。私たちが発見したのは、プロジェクトが具体的なディレクトリのように扱うのではなく、正確なシンボリックリンクを使用するように設定されていることです。つまり、別の開発者が自分のプロジェクトを別の場所に保持している場合、または単にシンボリックリンクを使用していない場合、文字どおりシンボリックリンクを探しているため、プロジェクトナビゲーターからディレクトリ全体が失われます。さらに悪いことに、設定でこのパス値を見つけることができませんでした。.ideaフォルダーを構成するファイルで正確な構成を見つけることができませんでした。
  • 定義ファイルはデフォルトでユーザーに分割されます。つまり、辞書に単語を追加したい場合は、jgreathouseの定義としてリストに表示されますが、他のユーザーには独自の定義セクションがあります。フラグの付いた単語は、他のユーザーのスペルミスとして表示されます。これは望ましくありません。定義ファイルに追加する理由は、IDEが間違っているためです。これらの定義を他のユーザーと直感的に共有してほしい。
  • IDEが現在メモリ内にある構成で構成を上書きするため、同僚は構成を上書きし続けました。つまり、開発者は作業していて、IDEの構成を変更するのではなく、プロジェクトの構成の変更を含む、または元のリポジトリをマージするか、または選択を与えるだけで、.ideaの構成を自動的に上書きします。 IDEの現在のメモリ内構成。私の意見では、これにより.idea構成が共有構成として使用できなくなります。これを回避するには、開発者は文字通りIDEのインスタンスをシャットダウンし、リポジトリをプルして、IDEを再度開く必要があります。IDEが現在メモリ内にある構成で瞬時に上書きする場合、共有構成を保持しても意味がありません。それ'

Visual StudioとNetbeansを使用して、VCでこれらのタイプの共有IDE構成を以前に行ったことがあり、常に問題はありませんでした。しかし、.ideaを使用すると、単に使用できないように感じるので、残念です。JetBrainsがその上に乗って、より良いユーザーエクスペリエンスになってほしいと思います。


> IDEが構成を変更したり、選択を与えたりする代わりに、.idea構成をIDEの現在のメモリ内構成で自動的に上書きします。うわー、それは本当に残念です。知っておきたい!
グレッグ価格
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.