기타/🚨 에러

[에러 잡자] 깃허브 # remote: error: GH001: Large files detected.

둥굴둥굴둥굴레차 2021. 2. 11. 17:12

😂 상황 브리핑

 

1일 1커밋을 실천하려고 노력중..

오늘도 수업내용을 잘 다듬어 깃헙에 올리려고

git bash를 켜고 push 하였으나... 생전 처음 보는 에러가 떴다.

 

에러를 극도로 무서워하는 코린이는... 잠시 두려움에 떨었지만 포기하지 않기로 한다..

왜냐하면 이 에러 때문에 이후의 모든 push가 불가능했기 때문이다...

 

에러를 자세히 보면 0205/01. CSS.assets 폴더에 Pychram의 exe파일이 집어넣어져 있다..

일부러 넣은건 아닌데.. 대체 왜 들어가 있던건지.. 내 정신머리는 도덕책.. 어디있는건지..

 

 

또 더 읽어 보면 Large files detected.. 용량이 큰 파일이 감지되었다고 한다. exe때문!

깃헙에선 100MB이상을 올릴 수 없기 때문에..이와 같은 에러가 발생한 것이다. 

 

다만 시스템적으로 꼭 필요하다면 LFS라는 기능을 사용할 순 있다고 한다.

 

앞으로 내가 또 실수를 할 수도 있고 이왕 에러 난 김에

에러 잡을 겸 미리 세팅해둘 겸 LFS를 설정해보려고 한다!

 

 

 

서론이 길었다. 아무튼 해당 exe파일을 삭제해주고 LFS로 세팅해서 에러를 해결해 보자.

 

🐱‍🐉 LFS 

1. LFS Download

git lfs를 사용하기 위해선 우선 설치가 필요하다. 

 

 

 

Git Large File Storage

Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.

git-lfs.github.com

위 링크로 들어가서 설치프로그램을 다운받거나 

 

$ brew install git-lfs 명령어를 lfs로 관리하고 싶은 폴더 안에서 git bash로 실행시켜 준다.

 

나는 해당 명령어로는 다운받아지지 않아 LFS홈페이지에 직접 들어가서 설치해주었다.

 

그런 다음 lfs로 관리하고싶은 파일에서 git bash를 열고 $ git lfs install 해주어 git lfs를 해당 폴더에 적용해주자.

 

2. LFS로 tracking할 파일 확장자 지정

 

나는 보통 마크다운 문서(.md)와 해당 문서 안에 들어가있는 사진들(.assets)을 깃헙에 업로드 하기 때문에

$ git lfs track "*.md" 그리고 $ git lfs track "*.assets" 를 해주어 해당 확장자들을 lfs가 tracking할 수 있도록 해주었다.

 

또한, 관리중인 내용이 정의된 .gitattributes 파일도 추적해주어야 한다.

$ git lfs track "*.gitattributes"

 

 

이제 평소처럼 git을 사용하면 된다!

 

 

 

그러나 나의 경우엔 여전히 같은 에러가 뜨면서 push가 되지 않았다.

내가 exe파일을 github에 올리려 했던 log가 남아있었기 때문이었다.

 

하...^^ log를 지워보자! ㅎㅎ^^

 

 

🐱‍👓 Log 삭제하기

1. git log

$ git log를 찍어보면 최근순으로 커밋 내역이 쭉 나오는데,

파이참 설치 파일이 추가된 커밋까지의 커밋 내역을 전부 삭제해주자!

 

커밋은 특정한 한가지만 삭제할 수 없기 때문에 해당 부분의 사이에 있는 커밋내역도 모두 삭제가 된다.

 

그렇다고 내가 그 사이에 업로드한 폴더, 파일들이 날라가는 것은 아니니 걱정하지 말자!

단지 내역이 삭제되는 것 뿐이다.

 

2. $ git reset HEAD^~

$ git log를 찍어보았지만.. 내가 exe파일을 올렸던 커밋내역은 나오지 않고 최근 4개의 내역만 나왔다..

그래서 그냥 넉넉잡아 최근 10개의 커밋내역을 삭제해보자 라는 생각으로 $ git reset HEAD^~10 을 해주었다.

 

만약 한 개만 삭제해주고 싶다면 $ git reset HEAD^ 해주면 된다! 

 

 

 

이제 해당 로그가 정상적으로 삭제되었으니 원래대로 github를 잘 사용하자!

 

 

그리고 일어난 커밋간의 충돌...ㅎㅎ

 

나는 이 오류를 찾는 도중에 1일 1커밋을 놓칠까봐

Github 홈페이지에 직접 들어가서 파일을 업로드 해주었는데,

그 때문에 충돌이 일어난 것 같다!

위의 설정을 마친 후 $ git pull origin master 까지 해주면 깔금히 해결!

 

 

만약, 더이상 lfs파일로 업로드 하는 것을 원하지 않을 때?

아래 사이트 참고!

 

Git LFS (Large File Storage) 사용하기

Git의 용량제한과 LFS 기본적으로 git은 여러개의 작은 소스코드 파일들을 위한 버전 컨트롤 시스템(VCS)이다. 따라서 Github의 경우 50Mb부터 Warning이 표시되고, 100Mb부터는 push시 Error가 발생한다. 그

newsight.tistory.com