[解決済み] Gitソースコントロール下のIntelliJ IDEAプロジェクトファイルが常に変化している場合の対処法は?
質問
私たちのチームの誰もがIntelliJ IDEAを使用しており、そのプロジェクトファイル(.iprと.iml)をソース管理に置いて、ビルド構成、設定、インスペクションを共有できるようにすることは有用だと考えています。さらに、TeamCityを使用して継続的インテグレーションサーバーでこれらの検査設定を使用することができます。(ユーザーごとのワークスペース.iwsファイルは.gitignoreファイルにあり、ソースコントロールにはありません)。
しかし、これらのファイルは、IDEAであらゆることを行うと少しずつ変化していきます。IDEAの課題データベースには、それに対する課題があります( IDEA-64312 というわけで、IDEAのバグと考えることもできるかもしれませんが、当面は我慢する必要がありそうです。
最近までSubversionを使っていたのですが、最近Gitに切り替えました。私たちはそれぞれ、プロジェクトファイルの変更リストを持つことに慣れたところで、他の人と共有したいプロジェクトファイルの変更がない限りは無視し、チェックインもしませんでした。しかし、Gitの本当の力は、(私たちが探っているところでは)連続的なブランチを推奨しているようです。プロジェクト・ファイルが常に変更されている状態でブランチを切り替えるのは面倒です。多くの場合、何らかの方法で変更をマージし、プロジェクトファイルの変更が新しいブランチに適用されるように対処しようとします。しかし、新しいブランチでプロジェクトファイルが変更された場合 (たとえば、他のブランチにはまだない新しいモジュールに取り組んでいる場合など)、git は「ブランチに変更があり、自分にもローカルに変更がある場合は、ファイルをマージするのは意味がない」というエラーを投げます。コマンドラインから "-f" を使って "git checkout" を実行すれば、ローカルの変更を捨ててブランチの変更を使うように強制できますが、(1)IDEA の Git Checkout GUI コマンド (10.5.X) は、ブランチの変更をチェックアウトして、そのブランチの変更を使うように強制します。 1)にはそのようなオプションがないようです。したがって、定期的にコマンドラインに切り替える必要があります。
そこで、この問題に対処するためのオプションについて、いくつか考えてみました。
- プロジェクトファイルを完全にソース管理から外す。.gitignoreに入れ、他の手段で各自とTeamCityに配布します。おそらく、他の場所か他の名前でソースコントロールに入れることになるでしょう。私たちのチームは小さいので、このオプションは検討するのに十分なほど実現可能ですが、素晴らしいとは思えません。
- どのファイルがどのブランチにあるのか、常に管理するように心がけながら生活を続ける。その一環として、各開発者が自分のシステム上に複数のプロジェクトのコピーを持つことを奨励し、それぞれを別のブランチにチェックアウトし、おそらく異なるプロジェクトファイル群を持たせるようにしてもよいでしょう。
- プロジェクト(.ipr)だけをソース管理し、モジュール(.iml)ファイルはソース管理せず、.gitignore ファイルに置いてみてください。.iprの中で定期的に勝手に切り替わるのは主に共有ビルド設定の順番のようですが、その設定方法については別途情報共有すればいいのかもしれませんね。IDEAがこのような、特に新規チェックアウト時に一部のファイルしか持っていないことにどう対処するかはよく分かりませんが。
GitとIDEAの両方が持っていると思われる巨大なカスタマイズ性に対処するためでしょうか。しかし、この問題を抱えているのは私たちだけではなさそうです。Stack Overflowの似たような質問には、次のようなものがあります。 3495191 , 1000512 そして 3873872 また、私が紹介した様々なアプローチ、これらの質問に対する回答に記載されているアプローチ、あるいはお勧めのアプローチの長所と短所を、どなたか考えてみてください。
解決方法は?
IDEAの ディレクトリベースのプロジェクト構造 ここで、設定は.iprファイルの代わりに.ideaディレクトリに保存されます。これにより、より多くの きめ細かなコントロール バージョンコントロールに保存されるものに対して しかし、コードスタイルや検査プロファイルのようなものは、それぞれ.ideaディレクトリの下にある独自のファイルになるので、共有するのは簡単です。
関連
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] git rebase の取り消し
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] Git にファイルモード (chmod) の変更を無視させるには?
-
[解決済み] 2つのリビジョン間でどのファイルが変更されたかを表示する
-
[解決済み] .gitignoreで一部のファイル以外を無視するようにする
-
[解決済み] Git のブランチの一覧を最新のコミット順に表示するにはどうしたらよいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Gitのエラー。リモートリポジトリへの接続時に「Host Key Verification Failed」。
-
[解決済み】gitが「変更をコミットするか、マージする前にstashしてください」と言うのを解決するには?
-
[解決済み】ローカルGitブランチとそのリモートブランチを比較する方法
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] git stashを元に戻す
-
[解決済み] ブラウンアウトの一環として、パスワード認証が一時的に無効になっています。代わりに個人用アクセストークンを使用してください[重複]。
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] GitBash | origin master - rejected (fetch first) | GitHub リポジトリにファイルがない。
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] IntelliJ IDEA 9/10、ソースコントロールにチェックインする(しない)フォルダは何ですか?