100MB 이상 파일 커밋?
유니티 파일 올리다보면 100MB이상의 파일을 커밋할 때 Files too large경고창이 뜨는데 Cancel해야 한다.
현재 AssetDB파일 (128MB)등의 파일이 대용량이고 무시되지 않는다
경고창에선 대용량 파일을 지원하는 Git LFS를 사용하길 권장한다.
하지만 보통 유니티에서 지금처럼 초기에 100MB이상 파일이 있는 경우는 굳이 올리지 않아도 되는
Library폴더 등에 있기 때문에, 먼저 불필요한 파일을 올리지 않도록 설정하는 .gitignore파일을 바꾸는 방법을 사용한다.
Git LFS방식은 아래에서 설명한다

ArtifactDB파일을 무시하는 방법을 묻는 질문의 레딧 글에도 최신버전의 .gitignore을 적용시키라는 답변이 있었다
저장소를 만들 때 이미 Unity파일의 .gitignore옵션을 추가했었지만 목록을 추가하여 파일을 갱신하였다
유니티 파일에 관해

여기서 실질적인 파일은 Assets, ProjectSettings, UserSettings이다. 파일을 올리거나 옮길때도
이 3가지 폴더만 가져가면 된다.
Library,obj,package등은 유니티에서 프로젝트를 여는 시점에 생성된다.
지금 100MB이상의 파일은 Library폴더에 있는 파일이고, 이 폴더는 굳이 올릴필요가 없다는 것을
.gitignore 을 통해 알려줄 것이다.
.gitignore
- github에서 업로드해주는 최신 파일(https://github.com/github/gitignore/blob/main/Unity.gitignore)
2. gitignore.io 사이트 : 유니티 외에도 Jupiter, Android studio 등 검색하면 그에 맞는 .gitignore파일 제공
위 두 사이트의 .gitignore 파일은 동일한 것 같아 아무거나 선택하여 복사하고,
현재 로컬저장소에 있는 .gitignore 텍스트파일을 열고 덮어씌어준다. (앖디면 .gitignore이름의 텍스트파일을 만들어 붙여넣는다)

.gitignore 파일 갱신은 완료했지만 아직도 경고창이 뜬다
유니티와 깃허브(github) 연동하기 3 - 리포지토리 변경사항 업로드하기 (commit, push)
이 블로그를 참고하여 다시 .gitignore파일을 열고, 유니티 프로젝트의 파일 및 폴더중 추적에서 제외할 항목들의 주석 문자(comment character)를 제거하고 저장한다
(/[Ll]ibrary/를 [Ll]ibrary/로 변경)
나머지도 주석문자를 제거해주었다

이후 git Desktop을 확인해보면 커밋할 파일이 300이상 있던 것이
200이하로 줄고, 커밋대상으로 100MB이상 파일이 없어 경고창 없이 정상 커밋된다
그리고 깃허브에 올라간 파일을 다운받아 실행시켰을 때도 오류없이 작동된다
하지만 위 방법으로도 해결이 안되고 100MB이상 파일이 아직도 있다면, 유니티 에셋 스토어에서 받은 파일이나 위 방법으로 무시되지 않는 다른 디렉토리에서 100MB이상 파일이 있을 확률이 크다.
(100MB 경고창이 안뜨더라도 파일을 push하는데 너무 오래 걸려
GitHub Desktop : The remote disconnected. Check your Internet connection and try again. 같은 인터넷 연결 경고창이 뜰 수도 있다)
그럼 Git LFS 방식을 사용해보자.
Git LFS
📌 gitignore옵션 추가했는데도 100MB이상 파일을 올려야 할 때 참고 - Git LFS
두번째 명령어 입력할때 확장자를 블로그마다 다르게 하는걸 보니 해당 파일의 확장자를 입력해야 하는 것 같다
[GitHub] 대용량 파일 100MB 이상의 파일 업로드 하기
https://sheepone.tistory.com/214
[GitHub] 대용량 파일 100MB 이상의 파일 업로드 하기 (with GitHub DeskTop)
에러 내용 GitHub DeskTop 에서 100MB이상의 파일을 푸쉬 했을때 나오는 화면으로 Cancel 해야 합니다. 조치 방법 Git LFS 설치 (위 창에도 해당 방법을 추천하고 있네요) 1. 다운로드 https://git-lfs.github.com/ G
sheepone.tistory.com
git lfs track "*.zip"
이게 앞으로 .zip확장자를 가진 파일을 LFS로 관리한다는 뜻
https://hengbokhan.tistory.com/20
[Github]Git LFS 사용하기
웹 서비스를 구현하여 git으로 관리하려 하거나 해당 서비스를 소개하는 repository를 만들고자 할 때, 서비스를 개발하는 데 쓰인 전체 소스 코드를 업로드하게 된다. 그리고 높은 확률로 파일 용
hengbokhan.tistory.com
그리고 깃허브에서 오픈소스를 받을 때 .zip 폴더를 받으면 안되고, git LFS가 설정되어 있는 리포지토리에 파일을 옮겨야 하는경우도 있다. (이번 FPS게임은 이렇겐 안하고 Fork해서 그대로 사용했다)
또 에셋을 받는 경우 이 에셋파일에 100MB넘는 파일이 있을 땐 명령어로 git LFS 사용한다 알려줘야한다.
Git LFS 는 용량제한이 있다. (무료 1GB 초과시 추가결제필요)
유니티에서 Git LFS로 관리?
ChatGPT답변:
깃허브에서 100MB 이상의 파일을 관리하기 위해 Git Large File Storage (LFS)를 사용하는 경우, 다음 단계를 따라 진행할 수 있습니다:
1. Git LFS 설치: 먼저, Git LFS를 설치해야 합니다. Git LFS 설치는 이미 진행한 것으로 가정하고, 다음 단계로 넘어갑니다.
2. .gitattributes 파일 설정: 유니티 프로젝트 루트 디렉토리에 `.gitattributes` 파일을 생성하거나, 이미 존재한다면 해당 파일을 엽니다. `.gitattributes` 파일은 LFS를 사용하여 관리할 파일을 정의하는 데 사용됩니다.
3. LFS로 관리할 파일 지정: `.gitattributes` 파일에서 다음과 같은 구문을 사용하여 LFS로 관리할 파일을 지정합니다:
*.unity binary
Assets/LargeFiles/* filter=lfs diff=lfs merge=lfs -text
위 예시에서는 확장자가 `.unity`인 모든 파일과 `Assets/LargeFiles/` 디렉토리 내의 모든 파일을 LFS로 관리하도록 지정하였습니다. `Assets/LargeFiles/` 디렉토리 대신 실제로 크기가 큰 파일이 있는 디렉토리를 사용하십시오.
(이 부분은 아래의 유니티 Asset디렉토리 내 모든 파일을 LFS로 관리하는 텍스트로 .gitattributes를 작성하면 된다.)
4. 파일 업로드 및 커밋: 이제 LFS로 관리할 파일을 커밋하고 푸시할 수 있습니다. Git LFS는 파일의 실제 내용을 추적하지 않고, 대신 파일을 가리키는 포인터를 추적하며 이 포인터는 Git 저장소에 커밋됩니다. 실제 파일은 LFS 서버에 업로드됩니다. (깃 데스크탑에서 하면됨)
git add .
git commit -m "Add large files"
git push
파일을 추가한 후 `git add .` 명령으로 변경된 파일을 스테이징하고, `git commit`으로 커밋합니다. 그런 다음 `git push`를 사용하여 변경 사항을 원격 깃허브 저장소에 푸시합니다.
5. LFS 파일 확인: LFS 파일이 제대로 업로드되었는지 확인하려면, 해당 파일의 GitHub 페이지로 이동하고 파일 크기를 확인합니다. LFS로 관리되는 파일은 일반적으로 포인터 파일로 표시됩니다.
이제 Git LFS를 사용하여 큰 파일을 깃허브에 올릴 수 있어야 합니다.
여기서 gitattributes파일은 메모장같은 텍스트파일이다. 유의할 점은 파일 이름이 정확히 .gitattributes로 되어야 한다는 것. 윈도우에서는 파일 탐색기에서 이름을 .gitattributes.로 설정하면 파일 이름 뒤에 자동으로 확장자가 추가되므로 주의해야 한다.
그리고 이렇게 100MB가 넘는 파일의 확장자를 일일이 다 입력할 필요없이 다음과 같이 .gitattributes 파일을 수정하여 특정 디렉토리 내의 모든 파일을 LFS로 관리할 수 있다
이렇게 한번 해두면 앞으로 올릴때 해당 디렉토리에 100MB파일이 있으면 자동으로 올려진다.
.gitattributes
이제 이 파일에 무엇을 넣어야 할지 정해야 한다.
유니티 Asset디렉토리의 모든 파일을 LFS로 관리
<.gitattributes>
# Unity Asset 디렉토리 내의 모든 파일을 LFS로 관리
Assets/** filter=lfs diff=lfs merge=lfs -text
# 유니티 스케너라이브러리 파일을 LFS로 관리
*.dll filter=lfs diff=lfs merge=lfs -text
# 유니티 텍스처 압축 파일을 LFS로 관리
*.unityweb filter=lfs diff=lfs merge=lfs -text
# 유니티 큰 용량의 패키지 파일을 LFS로 관리
*.unitypackage filter=lfs diff=lfs merge=lfs -text
# 유니티 압축된 에셋 번들 파일을 LFS로 관리
*.assetbundle filter=lfs diff=lfs merge=lfs -text
# 유니티 특정 타입의 데이터 파일을 LFS로 관리
*.csv filter=lfs diff=lfs merge=lfs -text
*.txt filter=lfs diff=lfs merge=lfs -text
# 추가적인 파일 타입을 여기에 나열할 수 있습니다.
.unitypackage파일은 유니티 에셋 스토어에서 받아온 에셋들을 패키지화한 파일이다.
`.unitypackage` 파일은 일반적으로 큰 용량을 가지는 경우가 많아서 Git LFS를 사용하여 관리하는 것이 좋다. `.unitypackage` 파일이 LFS로 관리되지 않으면 Git 저장소에 큰 파일이 직접 저장되어 프로젝트 크기가 증가하고, 클론 및 푸시 과정에서 시간이 오래 걸릴 수 있다.
https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f
.gitattributes for Unity3D with git-lfs
.gitattributes for Unity3D with git-lfs. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
위와 같이 설정해서 지금 만들고 있는 FPS게임을 업로드해보았는데 96%에서 끊기고 무료사용량을 초과한 8GB를 사용했다

LFS를 unistall하고 track해제해도 이미 차지하고 있는 저장공간은 돌아오지 않는다 한다..
.gitattributes에서 굳이 LFS로 관리하지 않아도 되는 옵션을 넣어서 그런가 아니면 내가 받은 에셋의 크기가 많이 컸나...
그냥 눈물이네 더 나은 방법을 찾아야ㅠ
100MB 이상 파일 커밋?
유니티 파일 올리다보면 100MB이상의 파일을 커밋할 때 Files too large경고창이 뜨는데 Cancel해야 한다.
현재 AssetDB파일 (128MB)등의 파일이 대용량이고 무시되지 않는다
경고창에선 대용량 파일을 지원하는 Git LFS를 사용하길 권장한다.
하지만 보통 유니티에서 지금처럼 초기에 100MB이상 파일이 있는 경우는 굳이 올리지 않아도 되는
Library폴더 등에 있기 때문에, 먼저 불필요한 파일을 올리지 않도록 설정하는 .gitignore파일을 바꾸는 방법을 사용한다.
Git LFS방식은 아래에서 설명한다

ArtifactDB파일을 무시하는 방법을 묻는 질문의 레딧 글에도 최신버전의 .gitignore을 적용시키라는 답변이 있었다
저장소를 만들 때 이미 Unity파일의 .gitignore옵션을 추가했었지만 목록을 추가하여 파일을 갱신하였다
유니티 파일에 관해

여기서 실질적인 파일은 Assets, ProjectSettings, UserSettings이다. 파일을 올리거나 옮길때도
이 3가지 폴더만 가져가면 된다.
Library,obj,package등은 유니티에서 프로젝트를 여는 시점에 생성된다.
지금 100MB이상의 파일은 Library폴더에 있는 파일이고, 이 폴더는 굳이 올릴필요가 없다는 것을
.gitignore 을 통해 알려줄 것이다.
.gitignore
- github에서 업로드해주는 최신 파일(https://github.com/github/gitignore/blob/main/Unity.gitignore)
2. gitignore.io 사이트 : 유니티 외에도 Jupiter, Android studio 등 검색하면 그에 맞는 .gitignore파일 제공
위 두 사이트의 .gitignore 파일은 동일한 것 같아 아무거나 선택하여 복사하고,
현재 로컬저장소에 있는 .gitignore 텍스트파일을 열고 덮어씌어준다. (앖디면 .gitignore이름의 텍스트파일을 만들어 붙여넣는다)

.gitignore 파일 갱신은 완료했지만 아직도 경고창이 뜬다
유니티와 깃허브(github) 연동하기 3 - 리포지토리 변경사항 업로드하기 (commit, push)
이 블로그를 참고하여 다시 .gitignore파일을 열고, 유니티 프로젝트의 파일 및 폴더중 추적에서 제외할 항목들의 주석 문자(comment character)를 제거하고 저장한다
(/[Ll]ibrary/를 [Ll]ibrary/로 변경)
나머지도 주석문자를 제거해주었다

이후 git Desktop을 확인해보면 커밋할 파일이 300이상 있던 것이
200이하로 줄고, 커밋대상으로 100MB이상 파일이 없어 경고창 없이 정상 커밋된다
그리고 깃허브에 올라간 파일을 다운받아 실행시켰을 때도 오류없이 작동된다
하지만 위 방법으로도 해결이 안되고 100MB이상 파일이 아직도 있다면, 유니티 에셋 스토어에서 받은 파일이나 위 방법으로 무시되지 않는 다른 디렉토리에서 100MB이상 파일이 있을 확률이 크다.
(100MB 경고창이 안뜨더라도 파일을 push하는데 너무 오래 걸려
GitHub Desktop : The remote disconnected. Check your Internet connection and try again. 같은 인터넷 연결 경고창이 뜰 수도 있다)
그럼 Git LFS 방식을 사용해보자.
Git LFS
📌 gitignore옵션 추가했는데도 100MB이상 파일을 올려야 할 때 참고 - Git LFS
두번째 명령어 입력할때 확장자를 블로그마다 다르게 하는걸 보니 해당 파일의 확장자를 입력해야 하는 것 같다
[GitHub] 대용량 파일 100MB 이상의 파일 업로드 하기
https://sheepone.tistory.com/214
[GitHub] 대용량 파일 100MB 이상의 파일 업로드 하기 (with GitHub DeskTop)
에러 내용 GitHub DeskTop 에서 100MB이상의 파일을 푸쉬 했을때 나오는 화면으로 Cancel 해야 합니다. 조치 방법 Git LFS 설치 (위 창에도 해당 방법을 추천하고 있네요) 1. 다운로드 https://git-lfs.github.com/ G
sheepone.tistory.com
git lfs track "*.zip"
이게 앞으로 .zip확장자를 가진 파일을 LFS로 관리한다는 뜻
https://hengbokhan.tistory.com/20
[Github]Git LFS 사용하기
웹 서비스를 구현하여 git으로 관리하려 하거나 해당 서비스를 소개하는 repository를 만들고자 할 때, 서비스를 개발하는 데 쓰인 전체 소스 코드를 업로드하게 된다. 그리고 높은 확률로 파일 용
hengbokhan.tistory.com
그리고 깃허브에서 오픈소스를 받을 때 .zip 폴더를 받으면 안되고, git LFS가 설정되어 있는 리포지토리에 파일을 옮겨야 하는경우도 있다. (이번 FPS게임은 이렇겐 안하고 Fork해서 그대로 사용했다)
또 에셋을 받는 경우 이 에셋파일에 100MB넘는 파일이 있을 땐 명령어로 git LFS 사용한다 알려줘야한다.
Git LFS 는 용량제한이 있다. (무료 1GB 초과시 추가결제필요)
유니티에서 Git LFS로 관리?
ChatGPT답변:
깃허브에서 100MB 이상의 파일을 관리하기 위해 Git Large File Storage (LFS)를 사용하는 경우, 다음 단계를 따라 진행할 수 있습니다:
1. Git LFS 설치: 먼저, Git LFS를 설치해야 합니다. Git LFS 설치는 이미 진행한 것으로 가정하고, 다음 단계로 넘어갑니다.
2. .gitattributes 파일 설정: 유니티 프로젝트 루트 디렉토리에 `.gitattributes` 파일을 생성하거나, 이미 존재한다면 해당 파일을 엽니다. `.gitattributes` 파일은 LFS를 사용하여 관리할 파일을 정의하는 데 사용됩니다.
3. LFS로 관리할 파일 지정: `.gitattributes` 파일에서 다음과 같은 구문을 사용하여 LFS로 관리할 파일을 지정합니다:
*.unity binary
Assets/LargeFiles/* filter=lfs diff=lfs merge=lfs -text
위 예시에서는 확장자가 `.unity`인 모든 파일과 `Assets/LargeFiles/` 디렉토리 내의 모든 파일을 LFS로 관리하도록 지정하였습니다. `Assets/LargeFiles/` 디렉토리 대신 실제로 크기가 큰 파일이 있는 디렉토리를 사용하십시오.
(이 부분은 아래의 유니티 Asset디렉토리 내 모든 파일을 LFS로 관리하는 텍스트로 .gitattributes를 작성하면 된다.)
4. 파일 업로드 및 커밋: 이제 LFS로 관리할 파일을 커밋하고 푸시할 수 있습니다. Git LFS는 파일의 실제 내용을 추적하지 않고, 대신 파일을 가리키는 포인터를 추적하며 이 포인터는 Git 저장소에 커밋됩니다. 실제 파일은 LFS 서버에 업로드됩니다. (깃 데스크탑에서 하면됨)
git add .
git commit -m "Add large files"
git push
파일을 추가한 후 `git add .` 명령으로 변경된 파일을 스테이징하고, `git commit`으로 커밋합니다. 그런 다음 `git push`를 사용하여 변경 사항을 원격 깃허브 저장소에 푸시합니다.
5. LFS 파일 확인: LFS 파일이 제대로 업로드되었는지 확인하려면, 해당 파일의 GitHub 페이지로 이동하고 파일 크기를 확인합니다. LFS로 관리되는 파일은 일반적으로 포인터 파일로 표시됩니다.
이제 Git LFS를 사용하여 큰 파일을 깃허브에 올릴 수 있어야 합니다.
여기서 gitattributes파일은 메모장같은 텍스트파일이다. 유의할 점은 파일 이름이 정확히 .gitattributes로 되어야 한다는 것. 윈도우에서는 파일 탐색기에서 이름을 .gitattributes.로 설정하면 파일 이름 뒤에 자동으로 확장자가 추가되므로 주의해야 한다.
그리고 이렇게 100MB가 넘는 파일의 확장자를 일일이 다 입력할 필요없이 다음과 같이 .gitattributes 파일을 수정하여 특정 디렉토리 내의 모든 파일을 LFS로 관리할 수 있다
이렇게 한번 해두면 앞으로 올릴때 해당 디렉토리에 100MB파일이 있으면 자동으로 올려진다.
.gitattributes
이제 이 파일에 무엇을 넣어야 할지 정해야 한다.
유니티 Asset디렉토리의 모든 파일을 LFS로 관리
<.gitattributes>
# Unity Asset 디렉토리 내의 모든 파일을 LFS로 관리
Assets/** filter=lfs diff=lfs merge=lfs -text
# 유니티 스케너라이브러리 파일을 LFS로 관리
*.dll filter=lfs diff=lfs merge=lfs -text
# 유니티 텍스처 압축 파일을 LFS로 관리
*.unityweb filter=lfs diff=lfs merge=lfs -text
# 유니티 큰 용량의 패키지 파일을 LFS로 관리
*.unitypackage filter=lfs diff=lfs merge=lfs -text
# 유니티 압축된 에셋 번들 파일을 LFS로 관리
*.assetbundle filter=lfs diff=lfs merge=lfs -text
# 유니티 특정 타입의 데이터 파일을 LFS로 관리
*.csv filter=lfs diff=lfs merge=lfs -text
*.txt filter=lfs diff=lfs merge=lfs -text
# 추가적인 파일 타입을 여기에 나열할 수 있습니다.
.unitypackage파일은 유니티 에셋 스토어에서 받아온 에셋들을 패키지화한 파일이다.
`.unitypackage` 파일은 일반적으로 큰 용량을 가지는 경우가 많아서 Git LFS를 사용하여 관리하는 것이 좋다. `.unitypackage` 파일이 LFS로 관리되지 않으면 Git 저장소에 큰 파일이 직접 저장되어 프로젝트 크기가 증가하고, 클론 및 푸시 과정에서 시간이 오래 걸릴 수 있다.
https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f
.gitattributes for Unity3D with git-lfs
.gitattributes for Unity3D with git-lfs. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
위와 같이 설정해서 지금 만들고 있는 FPS게임을 업로드해보았는데 96%에서 끊기고 무료사용량을 초과한 8GB를 사용했다

LFS를 unistall하고 track해제해도 이미 차지하고 있는 저장공간은 돌아오지 않는다 한다..
.gitattributes에서 굳이 LFS로 관리하지 않아도 되는 옵션을 넣어서 그런가 아니면 내가 받은 에셋의 크기가 많이 컸나...
그냥 눈물이네 더 나은 방법을 찾아야ㅠ