본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Section 5.13: 파일 내의 일부분만 ignore 처리하기
가끔씩은, 파일 내에 커밋하거나 외부에 공개하고 싶지 않은 로컬 변경사항들이 있을 수 있다.
원칙적으로 로컬 설정값 등은 .gitignore 에 의해 처리될 수 있는 별도의 파일로 묶여있는 것이 가장 좋으나, 가끔씩은 단기적인 방법으로 이미 저장소에 포함된 파일 내에 사용자 로컬에만 해당하는 변경내역을 유지하는 것도 유용할 수 있다.
clean filter를 이용하면 Git 으로 하여금 이러한 수정된 라인을 "못 본체하게" 설정할 수 있다. 이 라인들은 diff 상에도 아예 나타나지 않을 것이다.
file1.c 이라는 이름의 파일 내용이 아래와 같다고 가정하면:
struct settings s;
s.host = "localhost";
s.port = 5653;
s.auth = 1;
s.port = 15653; // NOCOMMIT
s.debug = 1; // NOCOMMIT
s.auth = 0; // NOCOMMIT
NOCOMMIT 이라고 주석을 단 라인은 다른 어떤 곳에도 공개되지 않기를 바랄 것이다. .git/config 과 같은 Git config 파일에 아래 내용을 기입하여 새로운 "nocommit" 이라는 filter 를 추가하도록 한다:
[filter "nocommit"]
clean=grep -v NOCOMMIT
이제 이 필터를 .git/info/attributes 혹은 .gitmodules 설정을 통해 원하는 파일에 적용한다:
file1.c filter=nocommit
이제 사용자가 작성한 NOCOMMIT 라인들은 Git 에서 숨겨진 채 관리될 것이다.
주의 사항:
- clean filter 사용 시 (특히 Windows 에서) 파일 처리 속도 저하를 가져올 수 있다.
- ignore 처리된 라인은 Git 이 파일을 업데이트 하는 경우 수정한 사항이 사라질 수 있다. smudge filter 를 이용하면 이러한 현상을 막을 수는 있으나, 설정이 더욱 복잡해진다.
- Windows 에서는 충분히 테스트되지 않은 방법이다.
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
반응형
'번역 > Git Notes for Professionals' 카테고리의 다른 글
5.15: .gitignore 에 추가하기 전에 이미 커밋되어 있던 파일들 정리하기 (0) | 2019.09.10 |
---|---|
5.14: 변경사항이 이미 추적되고 있는 (tracked) 파일의 변경 사항 ignore 처리하기 (0) | 2019.09.09 |
5.12: .gitignore 파일에 의해 ignore 처리된 파일들 검색하기 (0) | 2019.09.08 |
5.11: 비어있는 폴더 커밋하기 (0) | 2019.09.08 |
5.10: 서브디렉토리의 파일들 ignore 처리하기 (다중 .gitignore 파일 사용) (0) | 2019.09.06 |