2012-01-12 2 views
15

다음과 같은 디렉토리 구조와 파일이 있습니다.글로브 매칭 (** .gitignore)에서 **와 *의 차이점

pw-spec/ 
|-- event_spec.coffee 
|-- event_spec.js 
|-- integration 
| `-- service 
|  |-- auth_spec.coffee 
|  |-- auth_spec.js 
|  |-- chat_spec.coffee 
|  |-- chat_spec.js 
|  |-- transport_spec.coffee 
|  `-- transport_spec.js 
|-- message_spec.coffee 
|-- message_spec.js 
|-- pw_spec.coffee 
|-- pw_spec.js 
|-- run.coffee 
|-- run.html 
|-- run.js 
|-- service 
| |-- auth_spec.coffee 
| |-- auth_spec.js 
| |-- chat_spec.coffee 
| |-- chat_spec.js 
| |-- stream_spec.coffee 
| `-- stream_spec.js 
|-- spec.coffee 
|-- spec.js 
`-- stub 
    |-- stream.coffee 
    |-- stream.js 
    |-- transport.coffee 
    `-- transport.js 

4 directories, 27 files 

난 아무데도 pw-spec 디렉토리 내의 모든 *.js 파일을 무시하고 싶습니다.

그러나 .gitignore에 다음 패턴을 추가하는 것은 그것을 잘라하지 않습니다

pw-spec/*.js 
pw-spec/**/*.js 

문제를 내가 원하는 반면 두 번째는, 트리 내에서 깊은 정확히 1 개 수준 있는 JS 파일과 일치한다는 것입니다 pw-spec 아래의 모든 js 파일과 일치시킵니다. 당신이

pw-spec/integration/service/auth_spec.js 
pw-spec/integration/service/chat_spec.js 
pw-spec/integration/service/transport_spec.js 

가에서 누락 볼 수 있듯이

pw-spec/service/auth_spec.js 
pw-spec/service/chat_spec.js 
pw-spec/service/stream_spec.js 
pw-spec/stub/stream.js 
pw-spec/stub/transport.js 

[1] :

수행

ls pw-spec/**/*.js 

[1] 생산하고 있습니다.

*.js 
*/*.js 

은 또한 당신이 이미 "비 추적"원하는 서브 디렉토리에 추적 파일이있는 경우, 당신은 그들을 알 수 있도록 할 필요가 있습니다 :

+2

읽기 http://stackoverflow.com/a/1470664/6309 – VonC

답변

2

있는이 두 라인을 삽입 pw-spec.gitignore 만들기 같은 인덱스 :

git rm --cached path/to/file 

예를 들어, 디렉토리 pw-spec에 당신이 할 수있는 경우 :

find -type f -name "*.js" | xargs git rm --cached 
+0

나는'을 추가했습니다.'pw-spec'에서'gitignore'를 사용합니다. 그러나'* .js'는'pw-spec'의 직접적인 자손과 만 일치하며 서브 디렉토리 내의'.js' 파일과 일치하지 않습니다. –

+0

그래,'.git/info/exclude'와 섞어서 ... – fge

+0

업데이트 된 게시물보기, Works For Me (tm) – fge

6

에 별도의 .gitignore을 가질 수 있습니다 참조하십시오.

하나의 솔루션 PW-사양/.gitignore에

# generated files 
*.js 

을 넣어하는 것입니다.

제 2 용액을 넣어이다

/pw-spec/*.js 
/pw-spec/*/*.js 
/pw-spec/*/*/*.js 

등의 서브 디렉토리가 추가되는 경우 메인 .gitignore file.This 접근법 취성이다.

나는 일반적으로 .gitignore 파일을 무시하는 파일을 생성하는 Makefile과 같은 수준에 두는 편을 선호합니다.

+0

이 해결책은 여전히 ​​유효하지만, 2013 년 현재 OP가 시도한 바를 정확히 수행 할 수 있습니다 :'pw-spec/**/*. js'. [이 답변] (http://stackoverflow.com/a/1470664/5191105)을 참조하십시오. – Isaac

관련 문제