Mac을 통해 개발 작업을 하다보면 git에 한번씩 .DS_Store가 쌓이는 것을 볼 수 있습니다.
.DS_Store 란?
Desktop Service Store 약자로, 애플에서 정의한 파일 포맷입니다.
맥 OS X 시스템이 폴더에 접근할 때 생기며, 해당 폴더에 대한 메타데이터를 저장하는 파일입니다.
여기서 메타데이터는 해당 디렉토리의 특성, 구조 등에 관한 내용을 말합니다.
포렌식 관점에서 다음과 같은 유용한 정보를 담고 있습니다.
spotlight comment 정보
mac에서는 파일에 원하는 태그를 걸면, 파일 탐색기 기능을 하는 spotlight에서 빠르게 탐색이 가능합니다.
파일의 Time Stamp 정보
구조체의 modD, moDD 영역에 해당하는 부분인데, 파일 수정 시간 관련 정보가 있습니다.
해당 디렉토리의 논리적/물리적 크기에 대한 정보
구조체의 logS, lg1S, phyS, ph1S 에서 얻을 수 있습니다.
그래서 삭제는 어떻게 하는거야?
1. 터미널에 다음 명령어로 저장된 .DS_Store 파일을 삭제합니다.
$ find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
2. 작업 공간 최상단 .gitignore 파일에 다음 코드 추가하기
다음 코드는 최상단과 최하위 모든 폴더에서 .DS_Store가 커밋되는 것을 방지합니다.
.DS_Store
._.DS_Store
**/.DS_Store
**/._.DS_Store
3. 삭제 성공
git status 를 해보니 .DS_Store 파일이 사라진 것을 확인할 수 있습니다.
4. 네트워크 연결을 통한 .DS_Store 자동 생성 방지 명령어
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true
$ defaults read com.apple.desktopservices DSDontWriteNetworkStores
true 가 나오면 정상적으로 설정된 것입니다.
이제 .DS_Store 파일이 작업 공간에 생성되지 않습니다!
Mac 환경에서 개발을 하고 Git 을 통해 작업 파일을 배포한다면 초기 환경 세팅에 필수라고 생각합니다.
참고: https://jonhyuk0922.tistory.com/116
참고: https://stackoverflow.com/questions/107701/how-can-i-remove-ds-store-files-from-a-git-repository