파일을 재귀 적으로 .gitignore하는 방법


106

.gitignore파일 에서 다음 패턴을 피하려고 합니다.

MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js

우리는 시도했습니다 :

MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js

그러나 이것은 작동하지 않았습니다. 이것은 Windows의 git입니다. 반복하지 않고이를 수행하는 더 간결한 방법이 있습니까?


답변:


116

git 1.8.2부터는 다음과 같습니다.

MyPrject/WebApp/Scripts/special/**/*.js

이 답변 에 따라 작동 합니다. 또한 Sourcetree 1.6.12.0과 설치하는 git 버전 (1.8.4-preview20130916)을 사용하는 Windows 7에서도 작동합니다.

디렉토리 아래의 모든 파일과 폴더를 재귀 적으로 gitignore하려면 :

MyPrject/WebApp/Scripts/special/**

git 1.8 이전에는 어떻습니까?
ashes999 2015-04-07

1
이 답변이 작동하지 않는 경우 (Windows에서) /처음에 문자 를 추가하십시오 . 예 :/MyProject/WebApp/Scripts/special/**/*.js
batressc

3
말 그대로 다른 답변에 대한 링크 일 때 내 답변이 계속 찬성 투표를받는 것이 부끄럽습니다 .
Sam

1
@puk : .gitignore이 질문의는 저장소 루트 (의 상위 디렉토리 /Webapp)에 있습니다.
lucid_dreamer

1
귀하의 대답은 좋아 보이지만 다음과 같은 경우 js를 제외한 모든 파일을 무시하기 위해 git 1.9.1을 사용하는 Windows 10에서 작동하지 않았습니다. (첫 번째 줄) foo/bar/*/*(두 번째 줄) !foo/bar/**/*.js한 수준의 하위 디렉터리에서만 작동했지만 재귀 적으로 작동하지는 않았습니다.
LLL

19

다음 gitignore 매뉴얼 페이지 :

[...] git은 패턴을 FNM_PATHNAME 플래그를 사용하여 fnmatch (3)에서 사용하기에 적합한 쉘 glob으로 취급합니다. 패턴의 와일드 카드는 경로 이름의 /와 일치하지 않습니다.

그래서,이 명확하게 지정하는 방법이 없다는 것을 의미 디렉토리의 일정 금액을 사이처럼 두 개의 문자열 사이에 specialjs.

그럼에도 불구하고 .gitignore디렉토리 당 파일을 가질 수 있으므로 귀하의 경우 다음 내용이

*.js

다음 장소에서

MyPrject/WebApp/Scripts/special/.gitignore

충분할까요?


나는 가지고 MyPrject/WebApp/Scripts/special*.js있었고 그것 MyPrject/WebApp/Scripts/specialfile.js뿐만 아니라 일치 했습니다 MyPrject/WebApp/Scripts/special/a/b/c/file.js. 그러나 어떤 이유로 동작이 변경되었으며 현재 해결 방법은 디렉토리를 개별적으로 나열하는 것입니다. Windows 용 GitHub를 사용하고 있습니다.
orad

1
find MyPrject/WebApp/Scripts/special -type d -printf 'echo "*.js" >> %h/.gitignore\n git add %h/.gitignore\n' | sh
jthill

9

이것은 osx에서 나를 위해 작동합니다.

lib64/**/__pycache__/
lib/**/__pycache__/
*.py[cod]
.ipynb_checkpoints/
**/.ipynb_checkpoints/
.DS_Store
**/.DS_Store

0

실행 시도 git rm -r --cached MyPrject/WebApp/Scripts/special/ 귀하 언급 한 디렉토리가 자식 캐시되었을 수 있습니다 및 비 추적 파일에 표시됩니다. 캐시를 지운 후에 언급했는지 확인하십시오 .gitignore.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.