안녕하세요! [생각하는 개발자]입니다.
지난 시간에는 내 맥북에 단 한 번만 세팅해 두면 평생이 편해지는 iOS 맞춤형 글로벌 .gitignore를 구축해 보았습니다. 이제 불필요한 쓰레기 파일들이 완벽하게 필터링되는 쾌적한 환경이 마련되었으니, 본격적으로 코드를 저장소에 올리고 내려받는 Git의 기본 4대 흐름(Clone, Commit, Push, Pull)을 마스터해 볼 차례입니다.
특히 오늘 다룰 주제 중 핵심은 "어떻게 하면 동료들이 내 커밋 내역만 보고도 고개를 끄덕이게 만들 것인가?"에 대한 커밋 메시지 작성 기술입니다.

4.2.1 캔버스 위에 재료 얹기 (Git 4대 흐름 맛보기)
우리가 작성한 코드가 원격 저장소(GitHub 등)와 주고받는 기본 흐름은 아래의 4가지 명령어로 귀결됩니다.
# 1. 원격 저장소의 프로젝트를 내 맥북으로 통째로 복사해오기
git clone <저장소 URL>
# 2. 작업한 변경 사항을 로컬 저장소에 영구히 기록하기
git add .
git commit -m "feat: 로그인 화면 비밀번호 입력창 추가"
# 3. 로컬의 기록들을 원격 저장소(Server)로 쏘아 올리기
git push origin main
# 4. 동료가 업데이트한 최신 코드를 내 맥북으로 당겨와 동기화하기
git pull origin main
4.2.2 [단계별 실습] 10년 차 개발자처럼 커밋 메시지 작성하기
실무에서 주니어와 시니어의 가장 큰 차이 중 하나는 "커밋을 얼마나 의미 있는 단위로 쪼개고, 얼마나 직관적으로 설명하는가"입니다.
하루 동안 수십 개의 파일을 수정하고 퇴근 직전에 git commit -m "오늘 작업 끝!" 혹은 git commit -m "수정수정"이라고 올리는 순간, 동료들과 미래의 나에게 거대한 재앙을 선물하는 꼴이 됩니다.
현업에서 글로벌 표준으로 쓰이는 Conventional Commits(규약된 커밋) 규칙을 바탕으로 좋은 메시지를 작성하는 단계를 연습해 봅시다.
1단계: 커밋 메시지의 '머리말(Type)' 결정하기
메시지의 가장 첫머리에는 이 커밋이 어떤 성격의 작업인지 명시해 줍니다. 이렇게 타입을 분리하면 커밋 내역만 슥 봐도 앱에 무슨 일이 일어났는지 즉시 파악할 수 있습니다.
- feat: 새로운 기능 추가 (예: 로그인 기능 개발)
- fix: 버그 수정 (예: 자동 로그인 해제 오류 수정)
- docs: 문서 수정 (예: README.md 추가, 주석 작성)
- style: 코드 포맷 변경, 세미콜론 누락 등 (비즈니스 로직 변경이 없는 경우)
- refactor: 코드 리팩토링 (기능은 그대로 유지하면서 구조만 개선)
- chore: 빌드 업무 수정, 패키지 매니저(SPM, Pods) 설정 변경 등
2단계: 3-Part 구조로 작성하기 (제목, 본문, 꼬리말)
진짜 실무형 커밋은 한 줄로 끝나지 않습니다. 아주 중요한 기능이나 복잡한 버그 수정을 완료했을 때는 아래와 같이 작성하는 버릇을 들여야 합니다.
feat: 소셜 로그인 기능 추가 (<- 제목: 50자 내외로 명확하게)
- 카카오톡 간편 로그인 API 연동 (<- 본문: '무엇을', '왜' 변경했는지 서술)
- 로그인 성공 시 유저 식별값 KeyChain에 안전하게 보관하도록 구현
Fixes: #104 (<- 꼬리말: 연관된 이슈나 버그 넘버 언급)
👨💻 안드로이드 개발자와의 비교 조각
안드로이드 개발 진영에서도 Git을 활용하는 철학은 100% 동일합니다. Kotlin으로 프로젝트를 짜든, Swift로 짜든 협업을 위한 커밋 쪼개기의 원칙은 변하지 않죠.
다만 모바일 프로젝트의 특성상 "빌드가 깨지는 시점의 커밋"은 절대 원격(Push)에 올리지 않는다는 룰을 명심해야 합니다.
안드로이드의 gradle 빌드가 중간에 터지면 동료들이 작업을 못 하듯, iOS 역시 소스코드 파일 하나가 누락되어 xcodeproj 파일과의 링크가 깨지면 프로젝트 전체 빌드가 불가능해집니다. 따라서 **'최소 단위의 정상 작동 빌드 상태'**를 항상 커밋의 기준점으로 삼는 습관이 양쪽 플랫폼 모두에서 가장 중요합니다.
🎯 오늘의 요약
- Clone, Commit, Push, Pull은 Git 협업의 가장 기본적이고 빈번한 데이터 순환 고리다.
- 커밋 메시지는 Conventional Commits 규칙에 따라 feat:, fix:, refactor: 등의 태그를 달아 정돈한다.
- 커밋은 항상 "빌드가 정상적으로 성공하는 최소 단위"로 쪼개어 기록하는 버릇을 들인다.
좋은 커밋 기록은 협업하는 팀원들에 대한 가장 기초적인 배려이자 실력의 방증입니다.
다음 장 [iOS 4-3]에서는 여러 개발자가 하나의 프로젝트를 동시에 만질 때 가지치기하듯 방을 나누는 Branch(브랜치) 생성과 Merge, 그리고 모두가 무서워하는 공포의 Conflict(충돌) 해결법을 실전 가이드로 정복해 보겠습니다. 생각하는 힘을 기르며 다음 조각을 맞춰봅시다!