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/**/*
당신이 무언가를 추가하더라도..gitignore
, git을 강제로 인덱스에 추가할 수 있습니다.
git add --force uploads/rubbish/stuff/KEEP_ME/
그러나 "KEEP_ME"는 디렉토리인 것 같고 git는 일반적으로 빈 폴더를 좋아하지 않으므로 폴더가 비어 있으면 대신 "placeholder"-holder 파일을 추가할 수 있습니다.
git add --force uploads/rubbish/stuff/KEEP_ME/.keep_me
가장 많은 지지를 받은 답변으로 제시된 솔루션은 부정확하며, 이를 쉽게 입증할 수 있습니다.
업로드/*의 모든 것을 무시하는 것부터 시작합니다.
mkdir -p uploads/rubbish/stuff/KEEP_ME
touch uploads/a uploads/rubbish/a uploads/rubbish/stuff/a uploads/rubbish/stuff/KEEP_ME/a
echo '/uploads/*' >> .gitignore
git init
git add .
git commit -m "Initial commit"
이제 위와 같이 무시된 내용의 부모 디렉토리를 무시합니다.
echo 'uploads/rubbish/stuff/KEEP_ME/' >> .gitignore
echo 'uploads/rubbish/stuff/KEEP_ME/*' >> .gitignore
git status -u
추적되지 않은 파일을 표시하지 않습니다.
작동하려면 아래의 모든 파일을 무시해야 합니다.uploads/
나무()uploads/**/*
, 최고위층 뿐만 아니라uploads/*
보관할 트리의 모든 부모 디렉토리를 추가합니다.
echo '/uploads/**/*' > .gitignore
echo '!/uploads/rubbish/' >> .gitignore
echo '!/uploads/rubbish/stuff' >> .gitignore
echo '!/uploads/rubbish/stuff/KEEP_ME' >> .gitignore
echo '!/uploads/rubbish/stuff/KEEP_ME/*' >> .gitignore
git status -u
다음과 같은 의미가 있습니다.
On branch master
...
Untracked files:
(use "git add <file>..." to include in what will be committed)
uploads/rubbish/stuff/KEEP_ME/a
만약 우리가 사용했더라면uploads/*
에서.gitignore
위에서, 그러면 모든 중간 파일들도 포함되었을 것이고, 그래서 예를 들어,uploads/rubbish/a
위의 status 명령에 표시됩니다.
부-렌 린과 존의 답변은 꽤 도움이 되지만, 둘 다 합쳐야 했습니다.
업로드 내의 파일뿐만 아니라 다른 하위 폴더를 제외하고자 할 때, 폴더를 제외하고 하위 폴더를 포함하는 동안 주어진 폴더 앞에 임의의 디렉토리를 명시적으로 지정할 필요가 있음을 알게 되었습니다.
**/uploads/*
!**/uploads/rubbish/
!**/uploads/rubbish/*
또한 하위 폴더와 하위 폴더 내의 항목을 모두 표시하기 위해 하위 폴더와 그 내용을 모두 명시적으로 다시 포함시킬 필요가 있음을 발견했습니다.
일반 제외 기능이 있는 모든 폴더를 제외할 때 특정 폴더를 포함하는 방법을 파악하려고 했습니다.
**/build
/*
빌드 합니다를(를) 계속 제외합니다.**/build/*
그런 다음 포함할 경로를 수정하기 위해 다른 선을 추가합니다.
!**/folder/build/*
우리에게 무시를 남기기만 하면
**/build/*
!**/folder/build/*
git 버전 2.30.1 (Apple Git-130)
처럼 한 !
메소드도 작동합니다.또한 Art Shayderov가 언급한 것처럼, 이 방법은 git의 공식 문서에 여전히 기재되어 있습니다.
는 는입니다.dsym
파일은 iOS 프로젝트에서 완전히 무시됩니다.는 필요한다를 dsym
xcframeworks입니다.여기 제 일부가 있습니다..gitignore
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
!*.dSYM
그 에들이 .dsym
즉시 소스 제어 도구에 나타납니다.
언급URL : https://stackoverflow.com/questions/5261959/unignore-subdirectories-of-ignored-directories-in-git
'sourcecode' 카테고리의 다른 글
moment.js 24h 형식 (0) | 2023.09.25 |
---|---|
Swift 설명서 코멘트 사용방법 (0) | 2023.09.25 |
임시 폴더 단어 누락 업로드 누르기 (0) | 2023.09.25 |
-D_DEFAULT_SOUR는 무엇을 합니까? (0) | 2023.09.25 |
E2E 모의 $httpBackend 실제로 통과되지 않음나를 위해 관통합니다. (0) | 2023.09.25 |