안녕하세요! [생각하는 개발자]입니다.
우리는 지난 3부까지 UIKit을 활용해 화면을 조립하고, 생명주기를 통제하며, 데이터의 통로를 연결하는 법까지 마스터했습니다. 이제 나만의 작은 연습장을 넘어 '현업의 진짜 협업 생태계'로 걸어 들어갈 시간입니다. 그 첫걸음은 바로 버전 관리의 표준인 Git(깃)입니다.
"Git이야 그냥 git commit, git push만 하면 되는 거 아닌가요?"라고 생각하셨다면 큰 오산입니다. iOS 프로젝트는 독특한 파일 구조 때문에 아무 생각 없이 올렸다가는 동료의 프로젝트를 통째로 폭파시키기 십상입니다. 오늘은 iOS 개발자라면 무조건 알아야 하는 iOS 맞춤형 Git 관리와 .gitignore 설정법을 파헤쳐 보겠습니다.

4.1.1 캔버스 위에 재료 얹기 (iOS 프로젝트 파일의 실체)
Finder(탐색기)를 열고 우리가 만든 Xcode 프로젝트 폴더를 들여다보면, 일반적인 소스코드 파일(.swift) 외에 거대한 덩어리들이 보입니다. 이것들이 바로 버전 관리의 핵심 재료들입니다.
- ProjectName.xcodeproj: 프로젝트의 뼈대입니다. 파일의 링크 구조, 빌드 세팅, 폴더 계층 구조가 모두 이 안에 들어있습니다. (겉보기엔 파일 같지만, 사실 우클릭해서 '패키지 내용 보기'를 누르면 수많은 XML 코드가 들어있는 폴더입니다.)
- ProjectName.xcworkspace: 추후 외부 라이브러리(CocoaPods 등)를 붙이게 되면 생성되는 확장 작업 공간입니다. .xcodeproj를 포함하는 상위 개념입니다.
4.1.2 [단계별 실습] iOS 프로젝트용 완벽한 .gitignore 구축하기
Git은 폴더 내의 모든 변화를 추적합니다. 하지만 Xcode가 내 노트북에서 시뮬레이터를 돌리며 만드는 임시 빌드 파일, 개인 설정 파일까지 굳이 원격 저장소(GitHub/GitLab)에 올릴 필요는 없겠죠? 오히려 올리면 다른 사람의 컴퓨터와 충돌을 일으킵니다.
따라서 Git이 추적하지 않도록 명단을 적어두는 서류가 바로 .gitignore 파일입니다.
1단계: 터미널에서 .gitignore 생성하기
1. Mac의 터미널(Terminal) 앱을 켭니다.
2. cd 명령어를 이용해 프로젝트의 최상위 루트 폴더로 이동합니다.
cd /Users/username/Desktop/MyFirstApp
숨김 파일 형태의 .gitignore를 생성합니다.
touch .gitignore
2단계: 반드시 제외해야 할 iOS 필수 명단 작성하기
생성된 .gitignore 파일을 텍스트 편집기나 VS Code 등으로 열고, 아래의 iOS 핵심 제외 규칙을 작성해 줍니다.
# === Xcode 개인 설정 파일 (절대 올리면 안 됨) ===
*.xcuserdata
*.mode1v3
*.mode2v3
*.perspectivev3
# === 빌드 결과물 및 임시 파일 ===
DerivedData/
build/
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
# === 외부 의존성 매니저 (팀의 전략에 따라 선택) ===
# CocoaPods를 쓴다면 라이브러리 원본 코드는 제외하고 Podfile만 추적합니다.
Pods/
# === Swift Package Manager (SPM) ===
.build/
# === OS 자체 임시 파일 ===
.DS_Store
⚠️ *.xcuserdata를 왜 지워야 하나요?
이 안에는 Xcode에서 내가 마지막으로 열었던 파일 위치, 브레이크 포인트 설정, 내 노트북 고유 경로 등이 들어있습니다. 이걸 Git에 올리면 소스코드를 수정하지 않고 **Xcode를 켜기만 해도 Git 변경 사항(Modified)**으로 잡혀 커밋 내역이 지저분해집니다.
👨💻 C++ / 게임 개발자를 위한 비교 조각
과거 Cocos2d-x나 언리얼/유니티 같은 게임 엔진으로 큰 프로젝트를 관리할 때는 코드뿐만 아니라 몇 기가바이트(GB)에 달하는 3D 에셋, 텍스트 파일 등이 섞여 있어 Git 대신 **Perforce(P4)**나 SVN을 중앙 집중형으로 많이 활용하셨을 겁니다. 대용량 바이너리 처리에 Git이 쥐약이기 때문이죠.
하지만 순수 iOS 모바일 환경은 소스코드와 가벼운 UI 리소스 중심으로 돌아가기 때문에 99% Git이 표준입니다. 만약 게임 개발 시절처럼 대용량 에셋을 굳이 Git에 올려야 한다면, iOS 진영에서도 **Git LFS(Large File Storage)**라는 별도의 확장 기능을 프로젝트 루트에 연동해 텍스트와 바이너리 트래킹을 분리 관리하는 영리한 전략을 취합니다.
🎯 오늘의 요약
- iOS 프로젝트의 뼈대인 .xcodeproj는 사실 여러 설정 파일이 뭉쳐진 패키지 폴더다.
- 개인의 Xcode 환경 설정이 담긴 .xcuserdata와 무거운 빌드 폴더인 DerivedData/는 협업의 방해 요소이므로 반드시 제외한다.
- 프로젝트를 처음 생성하자마자 가장 먼저 해야 할 일은 iOS 전용 .gitignore를 세팅하는 것이다.
처음부터 저장소를 깨끗하게 관리해야 나중에 꼬이지 않습니다.
다음 장 [iOS 4-2]에서는 이렇게 세팅한 Git 저장소에 프로젝트를 안전하게 커밋하고 푸시하는 정석 흐름과 함께, 실무에서 선배들에게 사랑받는 '좋은 커밋 메시지 작성법'을 조각내 보겠습니다. 생각의 깊이를 더하는 개발자가 됩시다!