git은 특정 하위 폴더의 파일을 제외하고 특정 유형의 모든 파일을 무시합니다.


194

다음과 같은 디렉토리 구조가 있습니다.

  • 뿌리
    • 폴더 1
      • abc.json
      • def.json
      • Somedir
        • more.json
    • 폴더 2
      • qwe.json
      • rty.json
    • 투기
      • mock1.json
      • mock2.json
      • Somedir
        • more_mocks.json

이제를 사용하여의 파일을 제외한 .gitignore모든 *.json파일 을 무시하고 싶습니다 spec. 나는를 사용하지 않으 .gitignore에서 folder1folder2거기에 이들의 톤은 그들이 많은 추가 얻을 것이기 때문에, 나는 확실히 나는 오른쪽으로 이동하는 것을 잊지 않습니다있어 .gitignore장소에 파일을.

또한 json 파일이있는 중첩 된 디렉토리가 더있을 수 있으며이 규칙은 모든 하위 디렉토리에도 적용되어야합니다.

그렇다면 특정 하위 디렉토리를 제외하고 유형의 모든 파일을 어떻게 무시합니까?

답변:


304

!패턴을 무효화 하는 선택적 접두사 입니다. 이전 패턴에서 제외 된 일치하는 파일은 다시 포함됩니다. 부정 패턴이 일치하면 우선 순위가 낮은 패턴 소스보다 우선합니다.

http://schacon.github.com/git/gitignore.html

*.json
!spec/*.json

4
원하는 경우! / *. json을 포함하는 사양에 .gitignore를 추가 할 수도 있습니다.
David Mitchell

2
감사! 필자의 경우 spec 디렉토리에서 아무것도 무시하고 싶지 않다는 것을 깨달았습니다. 그래서 나는 매우 간단하게 도망 갈 수 있습니다 !spec. 매력처럼 작동합니다.
Alex Wayne

7
스펙이 최상위 레벨의 디렉토리 (예 : / spec) 인 경우 Amber의 답변이 작동하지만 spec이 하위 디렉토리 (예 : / a / spec 또는 a / b / spec) 인 경우에는 작동하지 않습니다. git 1.7.5.4 사용
Peter Lewis

7
@PeterLewis (나중에 방문자를위한) : 이러한 경우는 관련 서브 디렉토리에 .gitignore 파일을 작성하여 처리 할 수 ​​있습니다.
cmbuckley

3
이 솔루션 은 질문 의 하위 디렉토리에 있는 json파일이 아니라 spec직접 파일을 무시했습니다 somedir. 나는 또한 커밋 !spec/**/*.json되었는지 확인하기 위해 사용해야 했습니다 more_mocks.json.
Leith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.