팀 프로젝트에서 '최종_진짜최종' 같은 파일 이름으로 작업을 주고받다 보면 누군가의 작업이 덮어써지는 일이 반드시 생깁니다. 깃은 파일의 변경 이력을 기록하고 여러 사람의 작업을 합치는 버전 관리 도구입니다. 게임 개발에서 깃을 쓸 때 알아야 할 기초와 게임 프로젝트만의 주의점을 정리합니다.
깃의 기본 개념
| 용어 | 뜻 |
|---|---|
| 저장소(Repository) | 프로젝트 파일과 변경 이력이 저장되는 공간. 내 컴퓨터의 로컬 저장소와 서버의 원격 저장소가 있습니다. |
| 커밋(Commit) | 변경 내용을 하나의 기록으로 저장하는 것. 언제든 이 시점으로 돌아갈 수 있습니다. |
| 브랜치(Branch) | 작업 흐름을 갈라 독립적으로 작업하는 공간. 기능별로 브랜치를 나눕니다. |
| 병합(Merge) | 다른 브랜치의 변경 내용을 합치는 것 |
| 푸시·풀(Push·Pull) | 내 커밋을 원격에 올리거나, 원격의 변경을 내 컴퓨터로 받아오는 것 |
| 풀 리퀘스트 | 내 브랜치를 합쳐 달라고 요청하고 팀원이 검토하는 절차 |
깃허브나 깃랩 같은 서비스는 원격 저장소를 제공하고 풀 리퀘스트, 이슈 관리 같은 협업 기능을 더한 것입니다. 깃 자체와 이 서비스들을 구분해서 이해하면 헷갈림이 줄어듭니다.
팀 작업의 기본 흐름
- 작업 시작 전 원격 저장소의 최신 내용을 받아옵니다.
- 기능 단위로 새 브랜치를 만듭니다(예: feature/inventory-ui).
- 작업하면서 의미 있는 단위로 자주 커밋합니다. 메시지는 '인벤토리 정렬 버튼 추가'처럼 무엇을 했는지 구체적으로 씁니다.
- 작업이 끝나면 브랜치를 원격에 올리고 풀 리퀘스트를 만듭니다.
- 팀원이 검토한 뒤 메인 브랜치에 병합합니다. 메인 브랜치는 항상 실행되는 상태로 유지합니다.
처음에는 명령어보다 깃허브 데스크톱, 소스트리 같은 화면 기반 프로그램으로 시작해도 괜찮습니다. 다만 커밋, 브랜치, 병합이 각각 무엇을 하는지는 정확히 이해하고 눌러야 합니다.
게임 프로젝트만의 주의점
게임 프로젝트는 일반 소프트웨어보다 이미지, 사운드, 3D 모델 같은 큰 파일이 많습니다. 또 엔진이 자동으로 만들어 내는 임시 파일도 많아서 그대로 올리면 저장소가 금방 무거워집니다.
- .gitignore 설정: 엔진이 다시 만들 수 있는 폴더는 저장소에서 제외합니다. 유니티라면 Library, Temp, Logs, 빌드 결과 폴더 등이 대표적이며, 깃허브에서 제공하는 엔진별 템플릿을 활용하면 편합니다.
- 메타 파일 포함: 유니티의 .meta 파일은 에셋 간 연결 정보를 담고 있으므로 반드시 함께 올립니다. 빠지면 참조가 끊어집니다.
- 대용량 파일: 큰 바이너리 파일은 Git LFS(대용량 파일을 별도 저장소에 두고 링크만 관리하는 확장 기능)로 관리합니다. 서비스마다 용량 제한이 있으니 확인합니다.
- 직렬화 설정: 유니티에서 에셋 저장 방식을 텍스트로 설정하면 변경 내용 비교와 병합이 수월해집니다.
충돌을 줄이고 해결하는 법
충돌은 두 사람이 같은 파일의 같은 부분을 다르게 고쳤을 때 생깁니다. 코드 파일은 충돌 부분을 직접 비교해 고칠 수 있지만, 씬 파일이나 프리팹, 이미지처럼 합치기 어려운 파일은 충돌 자체를 피하는 것이 상책입니다.
- 한 씬은 한 사람이 담당하고, 공동 작업이 필요하면 프리팹 단위로 나눕니다.
- 작업 전에 팀 메신저로 '지금 이 파일 작업 중'이라고 알리거나, LFS의 파일 잠금 기능을 씁니다.
- 커밋과 풀을 자주 해서 서로의 변경이 크게 벌어지기 전에 합칩니다.
- 충돌이 났을 때 당황해서 아무 쪽이나 선택하지 말고, 어떤 변경이 맞는지 담당자와 확인합니다.
포트폴리오로도 쓰이는 깃 기록
깃 저장소는 협업 도구이면서 개발 과정의 증거입니다. 커밋 메시지가 구체적이고 브랜치가 기능별로 정리된 저장소는 '이 사람은 팀에서 일하는 법을 안다'는 신호가 됩니다. 개인 프로젝트에서도 깃을 쓰는 습관을 들이고, 공개 저장소에는 실행 방법을 담은 설명 문서를 함께 두세요. 단, 유료 에셋이나 저작권이 있는 리소스는 공개 저장소에 올리지 않도록 주의합니다.
SBS아카데미게임학원 게임프로그래밍 과정은 C++와 유니티·언리얼 엔진 기반 프로젝트 수업으로 진행되어, 팀 단위 개발에서 버전 관리가 왜 필요한지 직접 경험할 수 있습니다.
자주 묻는 질문
기획자나 아티스트도 깃을 알아야 하나요?
팀에 따라 다르지만 프로젝트 파일을 직접 다룬다면 기본 사용법은 알아 두는 것이 좋습니다. 화면 기반 프로그램으로 커밋과 풀만 할 줄 알아도 협업이 훨씬 편해집니다.
언리얼 엔진 프로젝트도 깃으로 관리하나요?
가능합니다. 다만 언리얼의 에셋 파일은 바이너리라 병합이 어렵기 때문에 LFS와 파일 잠금을 쓰거나, 팀에 따라 다른 버전 관리 도구를 쓰기도 합니다.
