.gitignore로 무시된 디렉토리 안의 특정 파일만 추가하는 방법

dev | 2016-07-12

data 디렉토리는 추가하지 않지만 data/.htaccess 파일은 추가하고 싶어서 아래와 같이 .gitignore 파일을 만들었다.

data/
!.htaccess

그런데 잘 안되어서 메뉴얼을 살펴봤더니 일단 한번 제외된 디렉토리 안의 내용물은 다시 추가할 수가 없다고 한다.

It is not possible to re-include a file if a parent directory of that file is excluded. Git doesn’t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined.

그러면 디렉토리를 제외하는 방법을 사용하지 않아야 한다는 말인데 사실 모든 형식의 파일이 data 디렉토리에 들어갈 수 있기 때문에 패턴을 특정하는 것이 불가능했다. 그런데 **를 사용해서 디렉토리 안의 내용을 모두 선택할 수 있다는 것을 발견하고 아래와 같이 해결했다.

public_html/zeroboard/data/**
!public_html/zeroboard/data/.htaccess

**를 사용할 때에는 .gitignore 파일의 상대위치를 모두 기술해 줘야 한다는 점에 주의 해야 한다. 부모 디레토리를 생략하면 적용이 되지 않는다.

Comments

  • 홍민희 2016-07-18

    .gitignore에는 원래대로 무시할 패턴 하나만 넣고, git add -f 명령으로 추가할 예외적인 파일만 강제 추가하셔도 됩니다.

  • 2018-01-23

    감사합니다. 왜케 자꾸 ! 가 안먹나 했는데 이런 이유가있었네요 **도 해도 안되서 왜 나만 안되지 했는데 보니까 폴더 단위로 할때는 *로 하면되네요 public/javascript/* !public/javascript/fixed 자바스크립트 하위 폴더 전부 포함되고 그중에 fixed 폴더는 깃 추적대상에 포함됩니다.

  • 삽질러 2019-05-18

    오지게 삽질했었는데 해결했네요 감사합니다.

Post a comment

:

: 공개 되지 않습니다. Gravatar를 표시 합니다.

:

: HTML 태그를 사용할 수 없습니다.