공백이 포함된 gitignore 패턴을 무효화하는 방법은 무엇입니까?

공백이 포함된 gitignore 패턴을 무효화하는 방법은 무엇입니까?

my.gitignore먼저 모든 것을 제외하고, 많은 노이즈를 피하기 위해 포함하고 싶은 모든 것을 무효화합니다 git status.

*
!awesome/
!calibre/
[…]

그러나 Visual Studio Code를 설치한 후에는 "Code - OSS" 디렉터리에 대한 일치를 무효화할 수 없는 것 같습니다. 나는 다음 줄을 시도했습니다 :

!Code - OSS/
!Code\ -\ OSS/
!'Code - OSS/'
!"Code - OSS/"
!Code*

내 .gitignore 맨 아래에 있는 이러한 모든 줄에도 불구하고 git status여전히 해당 디렉터리가 포함 가능한 것으로 나열되지 않습니다.


git check-ignore --verbose Code\ -\ OSS각 줄의 출력도 이상합니다.

.config/.gitignore:22:!Code - OSS/  Code - OSS
.config/.gitignore:22:!Code\ -\ OSS/    Code - OSS
.config/.gitignore:1:*  Code - OSS
.config/.gitignore:1:*  Code - OSS
.config/.gitignore:22:!Code*    Code - OSS

답변1

이것은 버그인 것 같습니다. 테스트 사례:

$ cd "$(mktemp --directory)"
$ mkdir foo\ bar
$ touch foo\ bar/test
$ git init
Initialized empty Git repository in /tmp/tmp.iGmBR6y2xR/.git/
$ git status --short 
?? foo bar/
$ cat > .gitignore << EOF
> *
> !foo bar
> !foo\ bar
> !"foo bar"
> "!foo bar"
> !foo bar/
> !foo\ bar/
> !"foo bar/"
> "!foo bar/"
> EOF
$ git status --short 
[no output]

해결 방법/테스트 방지 사례:

$ cat > .gitignore << EOF
> */
> !foo\ bar/
> EOF
$ git status --short 
?? .gitignore
?? foo bar/

관련 정보