Git Ignores 및 Maven 대상


117

누구나 git이 관리하는 파일 구조에서 특정 디렉토리의 모든 인스턴스를 무시할 수 있는지 알고 있습니다.

여러 하위 모듈이있는 maven 프로젝트의 모든 '대상'폴더를 제외하려고합니다. 최상위 .gitignore에서 각각을 명시 적으로 제외 할 수 있다는 것을 알고 있지만 ** / target / *과 같은 패턴을 지정하여 하위 디렉터리의 인스턴스를 자동으로 무시하도록 할 수 있기를 바랍니다.

이게 가능해?


이 작업을 어떤 구성으로 만들고 있습니까? /.settings/ 는 '.settings / *'또는 'xxx / yyy / .settings / *'가 아닌 'xxx / .settings / *'만 무시합니다. 무시 패턴이 반복적으로 적용되지 않는 것 같습니다. stackoverflow.com/questions/971465/… 도 참조하십시오 .
VonC

답변:


98

.gitignore파일 에서 패턴을 사용할 수 있습니다. 참고 항목 gitignore man 페이지를 . 패턴 */target/*은 target이라는 디렉토리와 그 아래의 모든 것을 무시해야합니다. 또는 */target/**목표 아래의 모든 것을 무시 하려고 할 수도 있습니다 .


4
감사! 다른 사람을 위해 여기에 .gitignore가 ususal maven & eclipse 용의자를 건너 뛰는 내용이 있습니다. 대상 / * / 대상 / .metadata tar.gz의 .classpath의 .project * / 설정 /.
sgargan

3
이 작업을 어떤 구성으로 만들고 있습니까? /.settings/ 는 '.settings / *'또는 'xxx / yyy / .settings / *'가 아닌 'xxx / .settings / *'만 무시합니다. 무시 패턴이 반복적으로 적용되지 않는 것 같습니다. stackoverflow.com/questions/971465/… 도 참조하십시오 .
VonC

6
다중 모듈 프로젝트의 경우 ** / target / 을 사용할 수 있지만 소스에서 합법적 인 "대상"디렉토리를 제외하지 않도록주의하십시오
Bogdan

1
/target/**\.git\info\exclude파일에서 잘 작동 합니다.
Abhijeet

모듈 중 하나에 "대상"하위 패키지가있는 Java 프로젝트를 커밋하려고했습니다. :(
okutane

222

.gitignore루트 디렉토리에 파일 않는 모든 하위 디렉토리에 적용됩니다. 내 모습은 다음과 같습니다.

.classpath
.project
.settings/
target/

이것은 다중 모듈 메이븐 프로젝트에 있습니다. 모든 하위 모듈은 m2eclipse를 사용하여 개별 Eclipse 프로젝트로 가져옵니다. 더 이상 .gitignore파일 이 없습니다 . 실제로 gitignore man 페이지 를 살펴보면 다음과 같습니다.

.gitignore경로와 동일한 디렉토리 또는 상위 디렉토리에 있는 파일에서 패턴을 읽습니다 .

그래서 이것은 당신을 위해 작동합니다.


5
' / target / ' 보다 더 나은 대답 입니다. 디렉토리 트리에있는 디렉토리는 제외됩니다. 그러나 파일에는 작동하지 않습니다 ( stackoverflow.com/questions/971465/… 참조 )
VonC

3
계속 읽으면 "이 패턴은 .gitignore 파일의 위치에 상대적으로 일치합니다."라고 표시됩니다. 귀하의 answear은 ... 잘못
user1387219

이 접근 방식을 사용하고 "target /"을 사용하여 모든 maven 빌드 폴더를 무시하지만 경로에 "target"폴더를 포함하는 패키지에있는 코드를 무시할 위험이 있으므로주의하십시오. (다음 클래스가있는 프로젝트에서 : src/main/java/org/example/game/archery/bow/LongBow.java and src/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.