Programing

Git은 하위 디렉토리의 특정 파일을 무시하지만 전부는 아닙니다.

crosscheck 2020. 11. 18. 08:35
반응형

Git은 하위 디렉토리의 특정 파일을 무시하지만 전부는 아닙니다.


다음과 유사한 구조가 있습니다.

/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php

git 이 '/ data / ...'경로 아래의 모든 .json 파일 을 무시 하고 싶지만 '/ data /'에는 때때로 하위 디렉터리가 포함되어 있습니다.

나의 이해는 간단한 것입니다 data/*.json(가)로 gitignore에 만, 하나의 디렉토리를 일치 *일치하지 않는 /에서 언급 한 바와 같이, http://git-scm.com/docs/gitignore , "패턴 형식", 총알 # 6 :

그렇지 않으면 git은 패턴을 FNM_PATHNAME 플래그와 함께 fnmatch (3)에서 사용하기에 적합한 쉘 glob으로 취급합니다. 패턴의 와일드 카드는 경로 이름의 /와 일치하지 않습니다. 예를 들어 "Documentation / *. html"은 "Documentation / git.html"과 일치하지만 "Documentation / ppc / ppc.html"또는 "tools / perf / Documentation / perf.html"과는 일치하지 않습니다.

이 작업을 수행하는 간단한 방법이 있습니까? 아니면 각 하위 디렉토리에 gitignore 파일을 명시 적으로 추가해야합니까?


나는 최근에 그러한 문제에 대한 게시물을 작성했습니다. 를 참조하십시오 여기 .

기본적으로 당신이 필요로하는 하나를 넣어하는 것 .gitignore*.json/data/디렉토리.

UPD : git 1.8.4 ( msysgit를 사용하는 경우 1.8.2 )부터 다음과 같은 이중 별 패턴을 사용할 수 있습니다./data/**/*.json


당신은 배치 할 수 있습니다 data/**/*.json귀하의 .gitignore에서의 /root여러 방지하기 위해 디렉토리를 .gitignore다른 디렉토리에있는 파일을

**/ -모든 하위 디렉터리 수 (현재 포함)와 일치

예 : data/**/*.json레코드를 무시합니다 data/1.json, data/subfolder/2.json,data/../../3.json


이 패턴은 png 및 jpg 파일 만 무시하는 데이터 하위 폴더에 적합합니다.

**/data/**/*.png
**/data/**/*.jpg

참고 URL : https://stackoverflow.com/questions/6794717/git-ignore-certain-files-in-sub-directories-but-not-all

반응형