GitNotes.5-13.md
본 문서는 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)

반응형

+ Recent posts