program story

Git에서 무시 된 디렉터리의 하위 디렉터리 무시

inputbox 2020. 10. 10. 10:02
반응형

Git에서 무시 된 디렉터리의 하위 디렉터리 무시


디렉토리를 무시했지만 그 안의 특정 하위 디렉토리를 무시하고 싶다고 가정 해 보겠습니다. 그래서 설정이 있습니다.

/uploads/
/uploads/rubbish/
/uploads/rubbish/stuff/KEEP_ME/
/uploads/foo/
/uploads/foo/bar/lose/

그리고 KEEP_ME디렉토리를 제외한 모든 것을 무시하고 싶습니다 . 무시가 다음과 같이 보이기를 바랍니다.

/uploads/*
!/uploads/rubbish/stuff/KEEP_ME/

그러나 그것은 작동하지 않으며 동일한 주제에 대한 여러 순열도 마찬가지입니다.

작동하는 하나는

/uploads/**/**/**/
!/uploads/rubbish/stuff/KEEP_ME/

하지만 조금 제한적이고 장황하다고 느껴지나요?


gitignore 문서의 패턴 형식 섹션에 따르면 :

선택적 접두사 "!" 패턴을 부정합니다. 이전 패턴에서 제외 된 일치 파일은 다시 포함됩니다. 해당 파일의 상위 디렉토리가 제외 된 경우 파일을 다시 포함 할 수 없습니다. Git은 성능상의 이유로 제외 된 디렉터리를 나열하지 않으므로 포함 된 파일의 모든 패턴은 정의 된 위치에 관계없이 영향을주지 않습니다. 첫 번째 "!"앞에 백 슬래시 ( "\")를 넣으십시오. 리터럴 "!"로 시작하는 패턴 (예 : "! important! .txt")

따라서 이전에 제외 된 상위 디렉터리 /uploads/rubbish/stuff/keep/패턴은 콘텐츠를 부정하기 전에 배타적으로 부정되어야합니다.

#ignore everything within /uploads/ 
/uploads/*

#include everything within /uploads/rubbish/stuff/keep
!/uploads/rubbish/stuff/keep/  
!/uploads/rubbish/stuff/keep/*

내부 /uploads/rubbish/stuff/keep/하위 디렉터리를 포함하려면 세 번째 줄을 추가합니다.

!/uploads/rubbish/stuff/keep/**/*

에 무언가를 추가하더라도 git이 색인에 추가 하도록 강제.gitignore 할 수 있습니다.

git add --force uploads/rubbish/stuff/KEEP_ME/

그러나 "KEEP_ME"는 디렉토리 인 것처럼 보이며 git은 일반적으로 빈 폴더를 좋아하지 않으므로 폴더가 비어있는 경우 대신 "placeholder"-holder 파일을 추가해야합니다.

git add --force uploads/rubbish/stuff/KEEP_ME/.keep_me

일반 제외가있는 모든 폴더를 제외 할 때 특정 폴더를 포함하는 방법을 찾으려고했습니다.

**/build

/*일반 제외 끝에 를 추가하면 모든 빌드 파일을 계속 제외합니다.**/build/*

그런 다음 포함하려는 경로를 수정하기 위해 다른 줄을 추가합니다.

!**/folder/build/* 

우리에게 읽는 gitignore를 남겨주세요

**/build/* 
!**/folder/build/* 

Buo-Ren LinJohn 의 답변은 매우 도움이되었지만 둘 다 결합해야했습니다.

업로드 내 파일뿐만 아니라 다른 하위 폴더 를 제외하려면 폴더를 제외하고 하위 폴더를 포함하면서 지정된 폴더 앞에 임의의 디렉터리를 명시 적으로 지정해야 합니다.

**/uploads/*
!**/uploads/rubbish/
!**/uploads/rubbish/*

또한 폴더와 하위 폴더 내의 항목을 모두 표시하려면 하위 폴더와 그 내용을 모두 명시 적으로 다시 포함해야합니다.

참고 URL : https://stackoverflow.com/questions/5261959/unignore-subdirectories-of-ignored-directories-in-git

반응형