github 원격 저장소에 push를 할 때 원래는 보지 못했던 .DS_Store 파일이 저장되었습니다.
본 포스팅에서는 .DS_Store 파일이 무엇인지와 삭제 방법 그리고 비활성화 방법에 대해 다루어보겠습니다.
.DS_Store 파일이란?
먼저, .DS_Store 파일이란 애플에서 정의한 파일 형식으로 Desktop Services Store의 약자입니다.
맥OS에서 finder를 통해 폴더(디렉토리)에 접근할 때 자동으로 생성되며, 이름에서도 유추할 수 있듯이 디렉토리 크기, 아이콘의 위치, 폴더의 배경 등 관련 정보를 가지고 있는 파일입니다. (윈도우에 thumb.db 파일과 비슷한 역할을 합니다.)
.DS_Store 파일은 유용한 정보를 제공해줄 때 도 있지만, 대부분의 경우 필요가 없으며, 특히 github을 통해 다른 사람들과 협업을 하는 경우 프로젝트와 관련이 없으니 삭제해주고 싶을겁니다.
*git status 명령어로 발견되면 원격저장소로 커밋(commit) 말고 삭제하는 것을 권장합니다.
맥OS .DS_Store 삭제 방법
1. 현재 디렉토리 포함 하위 디렉토리들의 .DS_Store 파일까지 모두 찾고 삭제합니다.
find . -name ‘.DS_Store’ -type f -delete
1-1. 만약 시스템 내 모든 .DS_Store 파일들을 삭제하고 싶다면,
sudo find / -name '.DS_Store' -type f -delete
2. 앞으로 .DS_Store 파일이 자동으로 생성되는 것을 원치 않는다면, 아래 비활성화 명령어를 실행시키면 됩니다.
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
적용되려면 맥OS 계정을 로그아웃했다가 다시 로그인 해주세요.
2-1. 추후에 다시 자동으로 파일이 생성되도록 활성화하고 싶다면, 아래 명령어를 실행시키면 됩니다.
defaults write com.apple.desktopservices DSDontWriteNetworkStores false
적용되려면 맥OS 계정을 로그아웃했다가 다시 로그인 해주세요.
git .DS_Store 삭제 방법
1. 원격 저장소 상위 디렉토리에서 현재 디렉토리 아래의 모든 .DS_Store 파일을 찾고 삭제합니다.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
2. 앞으로도 원격 저장소에 .DS_Store 파일이 저장되는 것을 원치 않는다면, 저장소 상위 디렉토리에서 .gitignore 생성 후 .DS_Store 파일을 추가하면 됩니다.
echo .DS_Store >> .gitignore
마지막으로 잊지말고 변경 사항을 커밋(commit)하고 푸시(push) 해주세요.
git add .
git commit -m '.DS_Store removed and added to gitignore'
git push origin main