엄밀히 말하면 git은 디렉토리가 아니라 파일 만 추적합니다. 따라서 디렉토리를 추가 할 수 없으며 해당 내용 만 추가 할 수 있습니다 .
.gitignore그러나 맥락 에서 git은 다음과 같은 유일한 이유로 디렉토리를 이해하는 척합니다.
해당 파일의 상위 디렉토리가 제외 된 경우 파일을 다시 포함 할 수 없습니다.
https://git-scm.com/docs/gitignore#_pattern_format
이것은 제외 패턴에 대해 무엇을 의미합니까? 자세히 살펴 보겠습니다.
bin
이것은 무시합니다
- 이름이
bin.
- 이름이 지정된 폴더의 내용
bin
bin후속 !항목 을 추가하여 무시 된 파일 및 폴더를 허용 할 수 있지만 이름이 지정된 폴더 의 내용 을 허용 할 수는 없습니다.bin
bin
!bin/file_in_bin # has no effect, since bin/ is blacklisted!
!bin/* # has no effect, since bin/ is blacklisted!
!file_in_bin # has no effect, since bin/ is blacklisted!
!bin # this works
bin/
위와 동일, 일치하지 않는 것을 제외하고 파일 이름을 bin. 후행을 추가하면 /git이 디렉토리 만 일치하도록 지시합니다.
bin/*
이것은 무시합니다
- 이름이 지정된 폴더에 포함 된 파일
bin
- 이름이 지정된 폴더의 직접 하위 폴더 내용
bin
bin/* # blacklists bin/file_in_bin and bin/subfolder/
!bin/subfolder/file_in_sub # has no effect, since bin/subfolder is blacklisted!
!bin # whitelists files named bin/bin, since bin/ itself is not blacklisted
!bin/ # has no effect, since bin/ itself is not blacklisted
!bin/file_in_bin # works since bin/ itself is not blacklisted
!file_in_bin # works too
!bin/subfolder # works (so implicitly whitelists bin/subfolder/file_in_sub)
!bin/subfolder/ # works just as well
!bin/* # works for file_in_bin and subfolder/
bin/**
이것은 무시합니다
- 내용
bin
- 하위 폴더의 내용 (모든 중첩 수준)
bin
bin/** # blacklists bin/file_in_bin and
# bin/subfolder/ and bin/subfolder/file_in_sub and
# bin/subfolder/2/ and bin/subfolder/2/file_in_sub_2
!bin/subfolder/file_in_sub # has no effect, since bin/subfolder is blacklisted
!bin/subfolder/2/ # has no effect, since bin/subfolder is blacklisted
!bin/subfolder/2/file_in_sub_2 # has no effect, since bin/subfolder is blacklisted
!bin/subfolder # works only in combinations with other whitelist entries,
# since all contents of subfolder are blacklisted (1)
!bin/file_in_bin # works since bin itself is not blacklisted
!bin/* # works for file_in_bin and subfolder; see (1)