[Github] 지저분한 파일 구조 정리하기 (.DS_Store, gitignore)

유지연·약 20시간 전
0

알고리즘 ps 코드들을 깃허브에 차근차근 올리고 있던 중에 눈에 너무너무 거슬렸던 더러운 파일구조... 아무리 흐린 눈을 해봐도 이제는 못견딜 것 같아 정리하기로 마음 먹었다!

.DS_Store?

제일 먼저 눈에 들어온 제거 대상 .DS_Store
Desktop Services Store의 약자로 애플에서 정의한 파일 포맷이다. 애플의 macOS가 폴더에 접근할 때 (Finder나 앱을 통해 특정 폴더의 정보를 읽거나 수정하는 것) 생기며, 해당 폴더에 대한 메타데이터를 저장한다.

프로젝트 파일과는 관련이 없으나 파일을 공유하는 과정에서 이 파일 또한 공유되는 경우가 있다고 한다.

+) 메타 데이터?

데이터에 대한 데이터, 즉 어떤 데이터의 정보를 설명하거나 요약해주는 데이터로 데이터의 관리나 이해를 돕는다. jpg(사진) 파일을 예로 들자면, 사진 이미지 자체를 데이터라고 했을 때 촬영 날짜, 시간, 해상도, 위치 정보 등이 메타 데이터에 해당된다.

그래서 어떻게 없앰??

최상위 디렉토리에서 현재 디렉토리 아래의 모든 .DS_Store 삭제

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

저장소 상위 디렉토리에 .gitignore 파일 생성 및 .DS_Store 파일 추가

echo .DS_Store >> .gitignore

변경 사항 add ▶️ commit ▶️ push

xcodeproj?

xcode 프로젝트 파일을 생성하면 아래와 같이 생성이 된다.

greedy라는 폴더 안에는 내가 작성한 소스 코드들이 포함되어 있는데, greedy.xcodeproj 대체 무엇일까? 아이콘을 봤을 때는 단순히 하나의 파일인 줄 알았는데 사실 파일이 아닌 폴더라고 한다.

공식문서의 내용을 인용하면 아래와 같다.
요약하자면 xcodeproj는 reposiory이며 파일, 리소스 그리고 build에 필요한 정보틀이 포함되어 있다고 한다.

An Xcode project is a repository for all the files, resources, and information required to build one or more software products. A project contains all the elements used to build your products and maintains the relationships between those elements. It contains one or more targets, which specify how to build products. A project defines default build settings for all the targets in the project (each target can also specify its own build settings, which override the project build settings).

xcodeproj의 구조에 대해서는 나중에 따로 포스팅을 통해 공부해봐야겠다. 하지만 내가 지금 관리하려는 repository에는 필요가 없기 때문에 깃허브와 연결을 끊어주도록 하겠다! (각 ps에 대한 소스코드만 올리고 싶기 때문)

그래서 어떻게 끊음??

git rm -r --cached 를 이용하면 나의 로컬 디렉토리와 레포지토리의 연결을 끊을 수 있다. 여담이지만 이 과정에서 rm -rf 명령어로 잘못 사용하는 바람에 아예 파일을 로컬에서 삭제시켜버렸다...^^* 그래서 다시 프로젝트 만들어서 다시 하나하나 파일 작성함 좋은 경험... 이었습니다?

git rm -r --cached "삭제할 파일 경로" >> 로컬 파일은 그대로, 연결만 끊음
git rm -rf "삭제할 파일 경로" >> 로컬 환경에서 파일 아예 삭제

아무튼 저렇게 연결을 끊은 후 앞으로도 계속 tracking을 끊을 것이라면 .gitignore에 해당 폴더의 경로를 작성해주면 된다. 이후에는 변경사항을 add ▶️ commit ▶️ push 해주면 끝!

greedy/greedy가 조금 거슬리긴 하지만 어쨋든 성공!! 하면서 git 명령어도 공부하고 파일 삭제도 하고 아주 유익했다. 아직까지 branch나 다른 git 기능이나 사용법을 잘 몰라서 이것도 한 번 날 잡고 싹 정리해봐야겠다!!


참고자료 링크
xcodeproj & wcworkspace 간단히 쓱~ 훑어보기
DS_STORE 이란?

profile
Keep At It

0개의 댓글