私は約5レベルの深さを持つMavenマルチモジュールプロジェクトを持っています。
私は現在gitに移動しており、target
フォルダのコンテンツの多くがgitによって「Unstaged Changes」としてキャプチャされていることがわかります。
グーグル検索してSOを検索しましたが、gitに全体を無視する方法に関する回答が見つかりませんでしたtarget
フォルダのディレクトリツリー。
プロジェクトのルートにあるMy .gitignore
は次のようになります。
.project
.classpath
.settings/
target/
奇妙なことに、target
ツリーの下のどこかにある.class
ファイルは、上記の定義では無視されますが、MANIFEST.MF
、pom.properties
などのファイルtarget
ディレクトリツリーのどこかにあるアプリケーションプロパティファイルは無視されません。
私は読んだ Git IgnoresとMavenターゲット ですが、その解決策は私にはうまくいかないようです。target/*
ルールを追加しようとしても何も変更されず、target/
をtarget/*
に置き換えた後、.class
ファイルもステージングされていないように見えます。
gitとmavenを使用している人々の大群が同様の問題をまだ解決していないとは思えないので、いくつかのガイダンスを本当に感謝します。ありがとう。
その理由の1つは、そのファイルをリポジトリーに既にコミットしていることです。その場合、それらを.gitignore
に追加しても、gitがこれらのファイルを追跡することは妨げられません。これを修正するには、まずそれらを次のようにリポジトリから削除する必要があります。
git rm -r target/
(プロジェクトにモジュールがある場合、関連するモジュールのターゲットまでのパスを含める必要があります。git rm -r parent_project/module_name/target/
)
ディスクからではなくリポジトリからディレクトリを削除したい場合は、--cached
オプションを使用できます。
git rm -r --cached target/
いずれの場合でも、その削除をリポジトリにコミットする必要があります(必要に応じて、target/
を.gitignore
に追加して、同じコミットで実行できます)。
target
target/*
これらの行をgitignoreに追加して、ターゲットファイルとターゲット内のすべてのファイルを無視します。これは、そのフォルダーとそのコンテンツを追跡しなくなります。
または、フォルダターゲットで tortoisegit を使用して、「削除して無視リストに追加」を選択するだけです。