하위 디렉토리에서 .gitignore 규칙을 무시할 수 있습니까? 디렉토리의 모든 .gitignore 규칙을 무시하고

루트의 .gitignore 규칙을 제외하고 하위 디렉토리의 모든 .gitignore 규칙을 무시하고 싶습니다.

예) 나는 이미 .gitignore디렉토리 구조에 파일을 가지고 있습니다 /a.

또한이 .gitignore에서 파일을 /a/b. 가정 /aa.txt b.txt파일을.

/a/b.config파일 이 있습니다. .gitignore정의 .config/a/b.

.config파일이 무시됩니다 .gitignore에서 /a/b.

하지만 하위 디렉토리의 .config규칙을 무시 하여 파일 을 추적하고 싶습니다 .gitignore.

가능합니까?

미리 감사드립니다



답변

귀하의 질문은 너무 명확하지 않지만 다른 gitignore 규칙을 원하는 하위 디렉토리가 있으면 해당 디렉토리에 새 .gitignore를 만들 수 있습니다.

당신이 가지고 있다고 :

project / .gitignore
프로젝트 / 물건 /.gitignore

stuff /의 .gitignore는 루트 디렉토리의 .gitignore를 재정의합니다.

git help gitignore또는 man gitignore가능한 것에 대해 훨씬 더 많은 정보를 가지고 있습니다.


답변

node_modules저장소 에 포함 하고 싶지만 일부 모듈에는 .gitignore자체가 있습니다. 루트 .gitignore파일에 다음을 추가하여 규칙을 무효화 할 수 있습니다 .

# Make sure to include everything in node_modules.
!node_modules/**


답변

여기서 문제의 핵심은 상위 디렉토리가 제외된다는 것입니다. 에서 $ man gitignore:

해당 파일의 상위 디렉토리가 제외 된 경우 파일을 다시 포함 할 수 없습니다. Git은 성능상의 이유로 제외 된 디렉터리를 나열하지 않으므로 포함 된 파일의 모든 패턴은 정의 된 위치에 관계없이 영향을주지 않습니다.

여기에 내가 작동하게 된 방법이 있습니다. 주어진:

/a/...
/b/foo
/c/...

/.gitignore:

/*
!/b

다음 /b/foo의 모든 상태로 포함 된 파일을 보여줍니다 /a및이 /c제외됩니다. 트레이드 오프는 파일을 포함하려는 디렉토리의 모든 부모에 대해 부정을 추가해야한다는 것입니다.


답변

내가 아는 한 그것을 할 방법이 없습니다. 로컬 .gitignore가 루트 ginignore를 덮어 쓰므로 내 해결 방법은 수동으로 추가하는 것입니다.

git add --force [ your file and folder]


답변