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에서 folder1와 folder2거기에 이들의 톤은 그들이 많은 추가 얻을 것이기 때문에, 나는 확실히 나는 오른쪽으로 이동하는 것을 잊지 않습니다있어 .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.