Hyun's Wonderwall

Github 협업 중 유니티 프로젝트 업로드 안 됨 해결 (100mb 용량 초과 문제, .gitignore) 본문

Study/Unity, C#

Github 협업 중 유니티 프로젝트 업로드 안 됨 해결 (100mb 용량 초과 문제, .gitignore)

Hyun_! 2023. 1. 10. 17:22

------- 2024년 덧붙임 -------
 

  • 본문 요약: .gitignore가 잘 안 되어서 그렇고, .gitignore 파일을 유니티 프로젝트 폴더 안에 넣어주면 됨.
  • 문제 발생의 핵심: 깃허브 레포지토리 클론한 폴더 != 유니티 프로젝트 폴더 인 경우

애초에 한 유니티 프로젝트를 만들어 브랜치로 깃허브에서 받아와 작업했으면 되었을 것인데... 유니티 프로젝트를 따로 작업하고 합치려다 이 사단이 났었다.
만약 유니티 프로젝트 여러 개를 합쳐야 한다면, 프로젝트 하나에 패키지로 내보내기한 다른 프로젝트를 임포트하거나, 수동으로 다른 프로젝트 폴더를 복붙해서 합칠 수 있다. (파일 탐색기에서 프로젝트 내부 폴더 쭉 복사해 다른 프로젝트 내부 폴더에 덮어쓰기 해도 합쳐지고, 파일 일일이 import 해도 됨)
 
------- 2023년 작성한 부분 -------
 
2022년 8월, PM으로 게임 개발 프로젝트를 진행하던 중 위의 문제가 발생해 해결방법을 찾아보게 되었고 얼추 해결법을 알게 되었습니다.
2023년 1월에 진행한 프로젝트에서도 동일한 상황이 있었고 문제가 발생했는데요.
이번에는 프로그래머님이 다른 방식으로 해결하셔서 그 두 가지 방법을 비교해서 포스팅을 올리게 되었습니다.

본론. 해당 문제의 원인은 깃허브 레포지토리의 구조 때문이었습니다.

1) 디렉토리가 한 겹 더 있는데 (Mini-Game)
2) .gitignore에서 디렉토리들을 ignore하는 부분은 /[Ll]ibrary/와 같이 적혀있음

(*디렉토리=폴더 입니다) Mini-Game 내부에 라이브러리같은 디렉토리들이 있는데 그 바깥만 확인하게 돼서 .gitignore가 저희가 원하는대로 작동하지 않았던거죠.

해결방법은 다음과 같습니다.

1) 그 한 겹을 없앤다 (2022년 8월 당시의 해결방법)

이브러리같은 폴더들을 밖으로 빼주면 됩니다.
깃헙에서 생성할 수 있는 기본 .gitignore 파일을 변경하지 않고 해결하고 싶을 때 (위의 2번 형태) 해결하는 방법입니다.


2) .gitignore에서 /[Ll]ibrary/를 **/[Ll]ibrary/와 같이 바꾼다 (새로 배운 해결방법)

**를 앞에 붙이면 해당 디렉토리가 저장소 내 어떤 위치에 존재하던 모두 ignore 처리하게 됩니다.
.gitignore 파일에서 디렉토리 부분에 **를 붙여서

**/[Ll]ibrary/
**/[Tt]emp/
**/[Oo]bj/
**/[Bb]uild/
**/[Bb]uilds/
**/[Ll]ogs/
**/[Mm]emoryCaptures/
**/[Uu]ser[Ss]ettings/


이렇게 바꾸면 됩니다.
.gitignore 사용해 파일과 디렉토리를 ignore 처리하는 방법을 잘 정리해주신 글 링크를 첨부합니다.
https://nochoco-lee.tistory.com/46

참고로 .gitignore는 이미 올라간 파일은 무시하지 않습니다.


-------2022년 8월에 작성했던 글 (오류 있을 수 있음) --------



*작성자는 게임 개발 프로젝트 PM이며, 프로젝트 중 코더분들께 위 문제가 발생해 해결방법을 찾아보게 되었습니다.
*같은 문제가 발생한 다른 PM 분들께도 공유드리고자 티스토리 글로 작성하지만, 개발 관련 지식이 얕아 단어 오용이 있을 수 있습니다. 오류가 있다면 언제든 지적 부탁드립니다.

# 문제 상황:
깃허브 데스크탑에 유니티 프로젝트 업로드가 안됨. 100mb가 넘어서 그렇다고 함.

# 분투과정:
넘는게 말이 안되는데... 왜 넘는지 모르겠지만 찾아보니 그럴땐 lfs라는걸 써야 한대서 써봄→안됨→구글이 bfg라는걸 써보라는데 또 안됨→포기
선배분께 용량 초과 문제 해결방법 여쭤봄→"?? 그거 별로 정상적인 상황 같지 않은데...? 용량을 줄여봐"→(덕분에 배경음악 압축방법 알게 됐지만,, 그래도 여전히 문제 발생함)

결국 또 다른 분께 여쭤봄→"폴더 구조가 이상한 것 같아!!"
원인은 허탈하게도... ".gitignore이 제대로 작동하지 않아서" 였습니다.

저희 레포지토리의 main 화면입니다. 레포지토리 내에 개별적으로 작업한 "프로젝트 폴더"가 업로드 되어 있어요. 이렇게 되면 .gitignore이 Mini-Game 내부 폴더(Library 등...)에 대해서는 적용되지 못합니다.
그 결과 Mini-Game 안에 있는 Library나 Logs등 업로드가 무시되어야했던 폴더속의 무수한 파일들이 올라가졌고, 이것이 용량 초과의 원인이었습니다.

위 상황에서 저는 Mini-Game을 백업 후 레포에서 삭제했고, .gitignore와 README.md만 남겨두고 푸시했습니다. 다른 프로그래머분들도 clone했던 레포 내에서 Mini-Game같이 잘못 생성한 폴더들을 삭제/이동해주셔야겠죠.
작업중이신 프로젝트 폴더를 이 레포지토리 경로가 아닌 개인 위치에 백업해 놓으시고(만일 대비) 다음의 방법으로 해결해보세요.


"내 컴퓨터에서 문서\GitHub\(레포지토리이름) 폴더에서 기존 .gitignore, README.md는 그대로 놔두고 Assets 등 프로젝트 내부 폴더 넣고 커밋&푸시"

  • 다시 강조하자면 커밋시 GitHub\(레포지토리이름)안에 프로젝트명 폴더로 한 겹 더 씌워서 통째로 넣으면 안됩니다. 내부 폴더들은 꺼내 놓고 껍질 폴더는 삭제해주세요.
  • 어떤 프로젝트에서 작업하고 있던 걸 깃허브 레포에 커밋하고 싶을 경우 내부 폴더들을 복사해 레포 폴더에 붙여넣기하면 파일들이 기존 동명의 폴더 안으로 알아서 들어가서 합쳐집니다. (Assets 등...)
  • .gitignore이 잘 작동하면 clone되었던 레포지토리 폴더 내에 Library, Logs등이 있어도 커밋되지 않고 원하는 대로 잘 업로드됩니다.
  • 혹시 Library랑 Logs이 업로드됐다면, 깃허브 데스크탑으로 커밋한 게 아니고 웹사이트에서 add file>upload files로 업로드한 경우일 수 있습니다.(경험해봄) 커밋을 통해야 Library 폴더와 같이 무시되어야 하는 것들이 안 올라가집니다.
테스트 레포지토리에서 기존에 업로드 문제가 발생했던 작업물들을 성공적으로 커밋한 모습입니다. Library, Logs가 내 clone된 폴더에는 있지만 깃허브 레포지토리에는 없습니다.


+ 그외
깃허브에서 레포지토리를 clone하는 것은 단순한 복사가 아닙니다. clone된 GitHub\(레포지토리이름) 폴더는 푸시와 풀을 통해 다른 사람과 연결됩니다. 즉, GitHub\(레포지토리이름) 폴더는 공용 작업 공간이고 그 안의 파일들은 다른 작업자들과 함께 다루는 것들입니다. 레포지토리 폴더에 새로 무언가를 넣거나 있던 걸 지운다면 깃허브 데스크탑 앱에서 changes가 뜰 거예요. 이대로 커밋하고 푸시하면 전체 레포지토리에서도 생성되거나 삭제되죠. 그래서 이 내부는 절대 개인 폴더처럼 사용하면 안 됩니다.