Unity 프로젝트 Git LFS 설정하기
필요한 리소스들을 다운받고 Github에 레포지토리를 생성해서 Init하던 중 약 3만건의 changed files가 발생했고,
100MB가 넘는 파일들이 있어 Commit되지 않는 현상이 발생했다.
✅ 주요 원인
- .gitignore가 없어서 불필요한 대용량 파일 포함
- Library/, Temp/, Build/, *.mp4, *.psd, *.exe, *.apk 등 Unity 일반 프로젝트에서 필요 없는 파일이 올라가는 경우.
- 대용량 파일이 포함되어 GitHub의 파일 용량 제한 초과
- GitHub는 단일 파일 100MB 이상 금지, 전체 저장소는 1GB 이하 권장.
- 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 레포지토리에 올라가 있던 기존 커밋을 덮어쓰는 것으로
프로젝트를 처음부터 다시 구성해서 푸시하는 중이기 때문에 기존 내용은 불필요하기 때문에 강제로 푸시해주었다.