부정 된 패턴 (!로 시작하는 줄)이있는 .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-index
git이 변경 사항을 보는 데 도움이 될 수 있습니다 (적어도 gitbash 버전 1.9.x에서).