Git無視とMavenターゲット


117

gitが管理するファイル構造内の特定のディレクトリのすべてのインスタンスを無視できるかどうかは誰でも知っています。

多くのサブモジュールを持つMavenプロジェクトのすべての「ターゲット」フォルダーを除外しようとしています。トップレベルの.gitignoreでそれらのそれぞれを明示的に除外できることはわかっていますが、実際に** / target / *のようなパターンを指定して、サブディレクトリのインスタンスを自動的に無視できるようにしたいですか?

これは可能ですか?


どのような構成でこれを機能させていますか?/.settings/は 'xxx / .settings / *'のみを無視し、 '。settings / *'や 'xxx / yyy / .settings / *'は無視しません。無視パターンは再帰的に適用されないようです。stackoverflow.com/questions/971465/…も参照してください。
VonC、2009年

回答:


98

.gitignoreファイルでパターンを使用することができます。gitignoreのmanページを参照してください。パターンで*/target/*は、targetという名前のディレクトリとその下のディレクトリはすべて無視する必要があります。または*/target/**、ターゲットの下のすべてを無視しようとする可能性があります。


4
ありがとう!ここに他の人のために、.gitignoreが通常のmaven&eclipse容疑者をスキップするためのコンテンツがあります。target / * / target / .metadata tar.gz .classpath .project *
/。settings

3
どのような構成でこれを機能させていますか?/.settings/は 'xxx / .settings / *'のみを無視し、 '。settings / *'や 'xxx / yyy / .settings / *'は無視しません。無視パターンは再帰的に適用されないようです。stackoverflow.com/questions/971465/…も参照してください。
VonC、2009年

6
マルチモジュールプロジェクトの場合、** / target /を使用できますが、ソース内の正当な「ターゲット」ディレクトリを除外しないように注意してください
Bogdan

1
/target/**\.git\info\excludeよくファイルで動作します。
Abhijeet

モジュールの1つに「ターゲット」サブパッケージを含むJavaプロジェクトをコミットしようとしました。:(
okutane 2017年

222

.gitignoreルートディレクトリにファイルがないすべてのサブディレクトリに適用されます。鉱山は次のようになります。

.classpath
.project
.settings/
target/

これはマルチモジュールのmavenプロジェクトです。すべてのサブモジュールは、m2eclipseを使用して個々のEclipseプロジェクトとしてインポートされます。これ以上.gitignoreファイルはありません。実際、gitignoreのmanページを見ると:

.gitignoreパスと同じディレクトリまたは任意の親ディレクトリにあるファイルから読み取られたパターン…

したがって、これでうまくいくはずです。


5
これは「/ target /」よりも良い答えです。ディレクトリのツリー内にあるディレクトリは除外されます。ただし、ファイルに対しては機能しません(stackoverflow.com/questions/971465/…を参照)
VonC

3
読み続けると、「これらのパターンは.gitignoreファイルの場所に対して相対的に一致します」と表示されます。あなたの回答は間違っています...
user1387219

私はこのアプローチを使用し、「target /」を使用してすべてのmavenビルドフォルダーを無視しますが、パスに「target」フォルダーを含むパッケージにあるコードを無視する危険があることに注意してください。(次のクラスのプロジェクトでは:src/main/java/org/example/game/archery/bow/LongBow.javasrc/main/java/org/example/game/archery/target/Target.java、そのような.gitignore設定でLongBowをヒットするものは何も見つかりません:
Cristiano Costantini

4

Abhijeetのコメントですでに指摘したように、次のような行を追加できます。

/target/**

フォルダ内のファイルを除外\.git\info\ます。

次にtarget、リモートリポジトリ内のそのフォルダーを削除する場合は、まずこのフォルダーをローカルリポジトリから手動で削除し、コミットしてからプッシュする必要があります。これは、gitが最初に変更されたターゲットフォルダーのコンテンツを表示するためです。


2

gitからターゲットフォルダーにあるすべてのクラスを無視します。開いている.gitignoreファイルに次の行を追加します。

/ .class

または

*/目標/**

それは私にとって完璧に機能しています。それを試してみてください。


0

すべての望ましくないファイルから、gitignoreに次の行を追加します

/target/
*/target/**
**/META-INF/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.