2016-11-21 3 views
3

나는 Windows 7Git v2.8.3을 사용하고있다.힘내 - 하나의 디렉토리 안에있는 모든 파일을 재귀 적으로 무시하는 방법, 특정 확장자를 가진 파일들.

Git 저장소가 포함 된 this directory structure이 있습니다.

testing_gitignore 
│ .gitignore 
│ file_1.txt 
│ file_2.txt 
│ 
├───dir_1 
│  file_11.txt 
│  file_12.txt 
│  file_13.txt 
│ 
└───dir_2 
    │ file_21.txt 
    │ file_22.txt 
    │ file_23.xlsx 
    │ file_24.txt 
    │ 
    └───dir_21 
      file_211.txt 
      file_212.xlsx 
      file_213.txt 

나는 dir_2 재귀하지만 (커밋) 유지 내부의 모든 파일을 무시하기 위해 확장자를 가진 파일을 .gitignore 파일을 구성 싶어 : .xlsx (재귀 적으로).

/dir_2/* 
/dir_2/**/* 
!/dir_2/*.xlsx 
!/dir_2/**/*.xlsx 

하지만 파일로 commit에 (당신은 또한 here을 볼 수 있습니다) 아래의 목록을 얻을 수 있기 때문에 더 성공을 얻을 : .gitignore 내부

나는 다음과 같은 사용

.gitignore 
file_1.txt 
file_2.txt 
dir_1\file_11.txt 
dir_1\file_12.txt 
dir_1\file_13.txt 
dir_2\file_23.xlsx 

하지만, 파일을 (커밋 할 파일로) 포함시켜야한다고 기대합니다.

dir_2/dir_21/file_212.xlsx 

이것을 달성하기 위해 .gitignore 구성을 제공해 주시겠습니까? 파일을 무시하는

답변

4

시도를 (? 여기에 게시하기 전에 당신은 내가 링크를 다운로드하기 전에 부착 된 디렉토리 구조로 스스로를 시도해 볼 수도 있습니다)하지만 폴더를 다시 포함

/dir_2/**/* 
!/dir_2/**/ 

합니다 (/**/*주의를 첫 번째 규칙의 모든 파일과 폴더를 재귀 적으로 무시한 다음 두 번째 규칙에 !/**/ 폴더를 다시 포함합니다. ( 폴더를

It is not possible to re-include a file if a parent directory of that file is excluded. 그래서 무시 파일 : (자신의 폴더가 무시되지 않기 때문에)

그럼 당신은

!/dir_2/**/*.xlsx 

주요 규칙에 대한 .gitignore 남아있는 파일을 다시 포함 할 수 있습니다 '/**/*'포함)은 부모 폴더 자체가 다시 포함되지 않는 한 다시 포함 할 수 없음을 의미합니다 (포함).: 후행 슬래시는 '폴더'를 의미 함).
전체 .gitignore :

/dir_2/**/* 
!/dir_2/**/ 
!/dir_2/**/*.xlsx 

당신은 그것의 효과를 테스트하기 위해 .gitignore을 커밋하지 않아도 참고 : 수정하고, 할 수는 git status : 한 추적되지 않은 파일의 (a git rm -r --cached dir_2 첫째을) , 그 규칙의 효과는 즉각적입니다. 대신에 그 .gitignore

git add .git status를 수행에만 추가되는 것으로 dir_2/에서 *.xlsx을 표시해야합니다.

[밑줄에주의하십시오]

+0

당신은 이것에 대해 더 자세히 설명해 주시겠습니까?. 처음 3 줄을 시험했지만 작동하지 않았습니다. 감사합니다 –

+0

@DavidSmith 나는 대답을 편집했습니다. – VonC

+0

마지막 3 줄을 시도했지만 여전히 작동하지 않습니다. 나는 아직'commit'을하지 않았기 때문에 (초기 커밋조차도),'git rm'을 할 필요가 없다고 생각합니다. –