Unity 개발

Unity 프로젝트 Git LFS 설정하기

아머르 2025. 6. 7. 19:11

필요한 리소스들을 다운받고 Github에 레포지토리를 생성해서 Init하던 중 약 3만건의  changed files가 발생했고,

100MB가 넘는 파일들이 있어 Commit되지 않는 현상이 발생했다.

 

✅ 주요 원인

  1. .gitignore가 없어서 불필요한 대용량 파일 포함
    • Library/, Temp/, Build/, *.mp4, *.psd, *.exe, *.apk 등 Unity 일반 프로젝트에서 필요 없는 파일이 올라가는 경우.
  2. 대용량 파일이 포함되어 GitHub의 파일 용량 제한 초과
    • GitHub는 단일 파일 100MB 이상 금지, 전체 저장소는 1GB 이하 권장.
  3. Assets 폴더 내 리소스가 너무 큼
    • 원본 리소스를 그대로 업로드한 경우 (예: 고해상도 텍스처, 동영상, 음악 등)

 

이를 해결하기 위해서는 Console창에서 작업을 해주어야하는데,

 

✅ Git LFS 전체 흐름 요약

📌 개념

  • Git LFS(Git Large File Storage)는 Git의 대용량 파일 처리 한계를 보완하기 위한 확장 도구.
  • 100MB 넘는 파일(텍스처, 동영상, 모델 등)을 포인터 파일로 관리하고 실제 데이터는 별도 저장소에 저장.

Git과 Git LFS를 설치해준 뒤 Install 해준다.

1. CMD창에서 E:를 입력해서 드라이브 선택 (본인의 경우 E드라이브에 레포지토리 존재)

2. 폴더에서 내 PC > 새 볼륨 (E:) > Unity Games > Project_Override 쪽의 빈 공간을 클릭하면 폴더 경로가 나오는데 이를 복사

3. cd E:\Unity Games\Project_Override (cd는 change directory의 약자이고, 그 뒤는 복사한 경로)

 

4. git init 입력 (이미 있는 경우 Reinitialized existing Git repository in E:/Unity Games/Project_Override/.git/ 라는 코멘트 뜸)

5. git lfs install 입력

 

6. Git LFS로 추적할 파일 지정

git lfs track "*.fbx"
git lfs track "*.png"
git lfs track "*.psd"
git lfs track "*.wav"
git lfs track "*.mp4"
git add .gitattributes

순차적으로 입력

📌 .gitattributes의 핵심 역할

텍스트 인코딩/개행 처리 Windows/Linux 간 CRLF vs LF 문제 해결
Git LFS 트래킹 설정 대용량 파일은 Git 대신 LFS로 관리하게 함
병합 전략 지정 특정 파일은 병합할 때 커스텀 방식 사용 가능
Diff/merge 방법 지정 바이너리 파일은 diff 안 하게 막을 수도 있음

 

7. Unity용 .gitignore 생성

echo [Ll]ibrary/ > .gitignore
echo [Tt]emp/ >> .gitignore
echo [Oo]bj/ >> .gitignore
echo [Bb]uild*/ >> .gitignore
echo [Ll]ogs/ >> .gitignore
echo [Uu]serSettings/ >> .gitignore
echo .vs/ >> .gitignore
echo *.csproj >> .gitignore
echo *.sln >> .gitignore
echo *.user >> .gitignore
echo *.unitypackage >> .gitignore
git add .gitignore

순차적으로 입력

 

* 이 작업을 하지 않을 경우 Library 등의 폴더가 git에 올라가는데 당연히 용량들이 크기 때문에 BFG를 다운받아서 작업을 해야하는데 매우 귀찮으므로 gitignore를 등록해줌

 

8. 커밋

git add .
git commit -m "커밋로그로 들어갈 내용 작성"

순차적으로 입력

 

 

9. Github에 연결, 푸시

git remote add origin "본인 깃허브 레포지토리 주소 붙여넣기"
git push -u origin main

순차적으로 입력

입력을 완료하고  git push -u origin main를 했을 때 에러메시지가 떴는데

main 브랜치가 존재하지 않아서 푸시할 수 없다는 뜻으로

git branch 명령어를 입력하면 현재 브랜치가 뜨는데 master로 되어있었다.

 

[새로운 main브랜치 생성]

git checkout -b main

git push -u origin main

 

[기존 브랜치를 main으로 변경]

git branch -m main
git push -u origin main

 

본인은 기존 브랜치를 main으로 변경해주었다.

이후 이런 에러 메세지가 떴는데, 이는 리모트(origin)에 이미 무언가가 커밋되어있는 상태를 뜻한다.

로컬에서는 이를 안 받아온 채 새로 푸시하려고 해서 충돌이 난 것.

 

git push -u origin main --force 명령어를 입력해 리모트 초기화를 무시하고 강제로 푸시해주었다.

--force 명령어는 Github 레포지토리에 올라가 있던 기존 커밋을 덮어쓰는 것으로

프로젝트를 처음부터 다시 구성해서 푸시하는 중이기 때문에 기존 내용은 불필요하기 때문에 강제로 푸시해주었다.

 

반응형