Programing

.gitignore에서 부정 패턴은 어떻게 작동합니까?

lottogame 2020. 10. 19. 07:37
반응형

.gitignore에서 부정 패턴은 어떻게 작동합니까?


부정 된 패턴 (!로 시작하는 줄)이있는 .gitignore 파일을 사용하려고하지만 예상대로 작동하지 않습니다.

최소한의 예로서 다음과 같은 디렉토리 구조가 있습니다.

C:/gittest
 -- .gitignore
 -- aaa/
   -- bbb/
     -- file.txt
   -- ccc/
     -- otherfile.txt

내 gitignore 파일에 다음이 있습니다.

aaa/
!aaa/ccc/

이 문서 페이지를 기반으로 한 내 이해 는 aaa / ccc / otherfile.txt 파일을 무시해서는 안되지만 실제로 git은 aaa 아래의 모든 것을 무시하고 있습니다.

이 문장을 오해하고 있습니까? "패턴을 무효화하는 선택적 접두사!; 이전 패턴에서 제외 된 일치하는 파일은 다시 포함됩니다."?

BTW, 이것은 msysgit 1.7.0.2를 사용하는 Windows에 있습니다.


실제로하고 싶은 것은 다음과 같습니다.

aaa/*
!aaa/ccc

당신은 그것을 "쳐다 보지 않는다"라고 말하고 aaa있기 때문에 경로를 조사하지도 않습니다 aaa/ccc. 와일드 카드를 사용하는 경우 여전히의 내용을 읽고 aaa각 항목이 와일드 카드와 일치하고 무시 aaa/ccc됩니다.


의 모든 항목을 제외 하고 그 아래의 모든 항목을 aaa포함 aaa/ccc하려면 다음을 사용해야합니다.

aaa/*
!aaa/ccc
!aaa/ccc/*

첫 번째 줄은 git에게 아래의 모든 내용을 무시하도록 지시하고 두 번째 줄은 실제로 세 번째 줄을 "활성화"하는 aaa폴더 aaa/ccc를 무시하지 않도록 지시 한 다음 아래의 모든 내용을 무시하지 않도록 지시합니다 aaa/ccc.


누군가가 아직 git status실행 중 새로 무시되지 않은 항목을 보지 못한다면 git update-indexgit이 변경 사항을 볼 수 있도록 도울 수 있습니다 (적어도 gitbash 버전 1.9.x에서).

참고 URL : https://stackoverflow.com/questions/2820255/how-do-negated-patterns-work-in-gitignore

반응형