당신은 단지 당신이 항상 깨끗하고 체크 아웃을 할 때 당신은 아마 /var
을 제외한다, 그 특정 (거의 빈) 디렉토리를 얻고 추적 명시 적으로 시작 git add -f var/.dummy var/log/.dummy
를 사용하는지 확인하는 자리로 .dummy
파일을 사용하는 경우 자리 표시 자 파일. 효과적인 결과는 사용자가 명시 적으로 추적 한 파일 인 .dummy
을 제외한 모든 내용을 무시한다는 것입니다.
반면에 거의 빈 디렉토리의 계층 구조를 var/log
이상으로 확장하려는 경우 약간의 설명을 사용할 수 있습니다.
규칙은 gitignore(5)에 설명되어 있지만 때로는 모든 규칙과이 규칙이 상호 작용하는 방식을 이해하기가 어렵습니다. 중요한 부분은 마지막 규칙이 이기고 나중에 적용되는 디렉토리가 이미 완전히 무시되지 않은 경우에만 효과적 일 수 있다는 것입니다. 즉, 디렉토리를 무시한 경우에는 내용의 일부를 무시하기 전에 해당 디렉토리의 내용을 무시해야합니다 (나머지 내용은 무시한 채로).
자동 var
에서 .dummy
파일을 제외한 모든 것을 무시하려면
은,이 일을하는 가장 간단한 방법은 최상위 수준에 그 일을 대신
var
디렉토리에
.gitignore
파일을 넣어 포함한다. 이 솔루션을 다른
SO answer에 설명했습니다.
# var/.gitignore
*
!/.gitignore
!.dummy
!*/
- 이 디렉토리 (
var
)에서 모든 것을 무시합니다.
- 그러나이 하나의 .gitignore 파일을 무시하지 마십시오 (이
.gitignore
파일을 추적하기 위해 git add -f
을 기꺼이 수행하려면이 파일을 두십시오).
- 또한이 디렉토리를 루트로하는 계층 구조 (
var
)의 깊이에서 .dummy
개의 파일을 무시하지 마십시오.
- 또한이 디렉토리 (
var
) 아래의 모든 디렉토리를 무시하지 마십시오.
이 규칙이 없으면 첫 번째 규칙은 서브 디렉토리를 무시하고 자식은 .dummy
개의 파일을 찾지 않습니다.
마지막 두 패턴은 후행 슬래시 (즉, *
은 다른 문자 외에 슬래시와 일치 함)가 없기 때문에 "재귀 적"패턴입니다. 후행 슬래시는 패턴 만 디렉토리와 일치시킵니다. 선행 및 내장 된 슬래시는 패턴을 .gitignore
파일 (또는 다른 제외 파일의 패턴에 대한 저장소의 루트) 위치에 효과적으로 고정시킵니다.은 dir
아래의 항목과 일치해야하며 (dir/.gitignore
에이 후자의 효과로는 /*.o
을 사용할 수 있음) 아이디어는 어디에도 일치하지 않아야합니다. 익스 클루 드 패턴을 편집하지 않고 어디서나 var
에서 새로운 .dummy
파일 "무시 안함"당신이 var/.gitinore
파일을 용납 할 수없는 경우
는, 당신은 아직도 당신이 무엇을 요구 할 수 있지만, 자동으로 할 수 없습니다.
# .gitignore at root of repository
/var/*
!/var/.dummy
!/var/log/
/var/log/*
!/var/log/.dummy
- 이
.gitignore
파일의 형제 인 var
디렉토리 아래의 모든 것을 무시합니다.
- 그러나
var/.dummy
은 무시하지 마십시오.
- 또한
var/log
디렉토리를 무시하지 마십시오.
- 그러나 모든 것을 직접 무시하십시오 (
var/log
).
- 그러나
var/log/.dummy
을 무시하지 마십시오.
패턴은 다음과 같습니다 흥미로운 디렉토리 (모든 것이 기본적으로 "unignored"이기 때문에이 처음 건너 뛰기) 거기에 .dummy
파일 무시 안함, 디렉토리에 어떤 무시 무시 안함. 계층 구조의 더 깊은 부분마다 패턴을 반복하십시오.
당신은 직접 var
아래의 디렉토리에 대해 작동하도록 *
와 log
을 대체 할 수 있지만, 자동으로 더 깊이있는 디렉토리 (예를 들어이 아니라 var/log/ssh/.dummy
를 들어, var/cache/.dummy
을 위해 일 것)에 대해 작동하지 않습니다. 이것은 비 후행 슬래시를 사용하고 패턴을 앵커하기 때문입니다. 수동으로 작동 시키려면 더 깊은 부분에 대한 더 많은 제외 규칙을 생성하기 위해 패턴을 반복해야합니다 (흥미로운 dir을 제외시키지 말고, dir의 내용을 무시하고, 파일을 무시하지 않음).
'**'는 제외 규칙 패턴에서 특별한 의미가 없습니다. 결국'*'과 같은 의미를 갖게됩니다 ("어떤 깊이에서도 다음과 일치"한다는 의미는 아닙니다). –