Github으로 Unreal version control 효과적으로 하기

Ryan Ham·2024년 11월 25일
1

Unreal Engine

목록 보기
28/31

Git과 Github의 사용 목적

프로젝트를 개발하는데에 있어서 Git을 사용하면, 내가 과거에 했던 프로젝트로 되돌아갈수 있다는 장점이 있다. 또한, 추가적으로 Github을 사용하면 과거의 시점을 캡쳐에 클라우드에 올릴 수 있어서 다양한 사람들과의 협업&자신이 작업했던 로컬 환경에 변화가 생겼을때 유연하게 개발할 수 있다는 장점이 있다!


언리얼 게임 개발시 초기 Git 설정

나름 고군분투하면서 어떤 방법으로 초기 Git을 설정하는 것이 효과적인지 테스트를 해보았다.

  1. Github Destop과 Git을 컴퓨터에 설치한다.
  2. Github Desktop으로 "New Repository"를 통해 로컬에 git과 .gitignore 파일을 생성한다.(여기서 꼭!! gitignore를 언리얼 엔진용으로 생성해야 한다!)
  3. 생성한 Repository를 Github Desktop에서 "push"를 통해 자신의 github에 올린다.
  4. Unreal Engine으로 새로운 프로젝트를 2번에서 생성한 폴더에 생성한다.
  5. git add를 하기 전에 추후 게임 개발에 사용할 에셋들을 미리 추가하고 이 에셋들의 경로들을 .gitignore에 추가한다.
  6. git add->git commit을 통해 git을 업데이트하고 git push를 통해 github repository를 관리한다.

특히 강조하고 싶은 부분이 있는데, 언리얼로 게임 개발을 하는데에는 큰 용량을 가진 에셋들이 종종 사용된다. Github에 push할때 각 파일의 용량이 100MB이상이면 중간에 오류나 발생함으로 .gitignore 파일을 신경써서 작성해주는 것이 정말로 중요하다. (2번) 과정에서 Github Desktop으로 Unreal용 .gitignore 파일을 생성하고 (5번) 과정에서 자신이 나중에 추가한 에셋들의 파일 경로들만 잘 추가해준다면 큰 문제는 없을 것이다:)


Git 명령어들

git add

바꾼 파일을 "git add"를 통해 임시 저장상태인 staging area로 보낼 수 있다.

git commit

staging area에 존재하고 있는 파일들을 최종 snapshot을 찍는 것이다. "git checkout"을 통해서 본격적으로 version control을 수행할 수 있는데, 여기서 "git commit"으로 생성된 snapshot들 중 하나를 골라서 되돌아갈 수 있다. "git commit -am"을 쓰면 add와 commit을 한꺼번에 할 수 있다.

git push

이것은 github 원격저장소에 snapshot한 결과를 올리는 과정이다. origin에 원격 저장소의 url을 등록해 놓았다면 git push origin [branch 이름]으로 코드를 올릴 수 있다.

git checkout [commit 해시값]

과거의 commit한 git 상태로 되돌아갈 수 있다.

git LFS

git으로 원격저장소에 push를 하면 한 파일의 크기 제한이 100MB에 걸리게 된다. 이를 해결하는 방법으로는 git LFS(Large File Storage)를 사용할 수 있다. 하지만 유료이므로 상황에 맞게 사용하자.

push할 repo 주소 선택

git remote add origin : 처음으로 원격 저장소 주소 만들때
git remote set-url origin : 이미 원격저장소 주소 있지만 바꾸고 싶을때
git remote -v : 현재 등록되어 있는 원격 저장소 링크 확인

.gitignore

git rm -r --cached . : .gitignore를 수정하였는데 이를 확실하게 반영하고 싶을때는 기존의 캐시를 날려주고 git add .를 다시 실행
git ls-files : 현재 git이 tracking하고 있는 file들을 보여준다.


Unreal용 .gitignore 템플릿

# Visual Studio 2015 user specific files
.vs/

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
*.ipa

# These project files can be generated by the engine
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb

# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga

# Binary Files
Binaries/*
Plugins/*/Binaries/*

# Builds
Build/*

# Whitelist PakBlacklist-<BuildConfiguration>.txt files
!Build/*/
Build/*/**
!Build/*/PakBlacklist*.txt

# Don't ignore icon files in Build
!Build/**/*.ico

# Built data for maps
*_BuiltData.uasset

# Configuration files generated by the Editor
Saved/*

# Compiled source files for the engine to use
Intermediate/*
Plugins/*/Intermediate/*

# Cache files for the editor to use
DerivedDataCache/*

# 나중에 추가한 게임 에셋 경로 추가하기
profile
🏦KAIST EE | 🏦SNU AI(빅데이터 핀테크 전문가 과정) | 📙CryptoHipsters 저자

0개의 댓글