Git 대용량 파일 업로드(Git LFS) 및 Ubuntu 22.04 Homebrew 설치, Commit History 삭제 (Git BFG)

Jaewon·2024년 11월 12일
0

우당탕탕

목록 보기
13/22

https://linux.how2shout.com/install-brew-on-ubuntu-22-04-lts-jammy-linux/
https://blog.naver.com/nan17a/222440850014
https://velog.io/@yoogail/%EB%8C%80%EC%9A%A9%EB%9F%89-%ED%8C%8C%EC%9D%BC-github%EC%97%90-push%ED%95%A0-%EB%95%8C-%EC%83%9D%EA%B8%B0%EB%8A%94-%EC%98%A4%EB%A5%98-%EC%A0%95%EB%B3%B5%ED%95%98%EA%B8%B0feat.-git-lfs-bfg
위 자료를 참고했다.


개인적으로 뭔가 해보던 중, Git에 100메가 이상의 파일이 올라가지 않는 것을 확인했다.
lfs(large file storage)를 통해 업로드하면 된다고 해서, 구글링을 통해 찾아본 대로 따라했는데도 대용량파일에 대한 push가 이뤄지지 않았다.

알고보니, 기존에 lfs를통해 커밋하지 않은 대용량파일에 대한 커밋내역이 남아있어서 되지 않는 것이었다..!
그리고, 이 커밋 기록을 지우려면 bfg(BFG repo-cleaner)를 설치해야 했는데,
우분투에서는 설치과정이 다소 까다로웠다.

나는 brew를 통해 bfg를 설치하기 위해 brew를 설치해줬다.

Ubuntu 22.04 Homebrew 설치

sudo apt update
sudo apt install build-essential git
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

위 명령을 차례로 입력해주고,

(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/{사용자이름}/.bashrc

현재 디렉토리 위치 상관 없이 brew command를 사용하기 위해 brew의 설치 경로를 환경변수에 추가해준다

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

Homebrew 설치 확인

brew doctor


위 커맨드를 통해 설치가 잘 되었는지 확인할 수 있다.

BFG 설치

다시 돌아와서 bfg를 설치해준다.

brew install bfg

대용량 커밋 히스토리 지우기

bfg --strip-blobs-bigger-than 100M

대상 레포지토리에서 위 명령을 입력해준다.
다만, 나의 경우 위 명령을 실행해도
no large blobs matching criteria found in packfiles 오류가 떠서

git repack && git gc

명령 입력 후 다시 첫 bfg명령을 입력했더니 실행됐다!

위 과정을 모두 따라주면, git lfs를 통해 대용량 파일을 업로드하는 과정에서 발생하는 오류는 해결할 수 있다.
사실, 커밋 내역이 깔끔한 상태라면 위 오류도 발생하지 않는다.
나는 모르고 커밋 내역을 남겨버려서 꼬인 경우다.

Git LFS를 통한 대용량 파일 업로드

참고로, 무료로는 2G까지의 파일만 업로드가능하다.
나의 경우, 300M이어서 상관이 없었다.

lfs설치

git lfs install

대상 레포지토리 경로에서 위 명령을 실행해준다.

lfs를 통한 push

git lfs track "{파일명}"
git lfs track "*.svg"

위 명령처럼 lfs로 트래킹하기 위한 대상 파일을 지정해준다
그러면, .gitattributes파일 내에 트래킹 대상 파일에 대한 정보가 저장된다.

git add .gitattributes
git add {대용량파일}

위 명령을 통해 .gitattributes파일과 대상 파일 모두 staging해주고,
commit 메시지 작성 후 push해주면 된다..고는 하는데,

나의 경우 위 명령으로 push중에 계속 오류가 발생해서

git lfs push --all origin

이 명령을 통해 대용량파일에 대한 push를 진행해주었다.
만약, lfs push과정에서 오류가 발생한다면, BFG를 통해 과거 대용량파일에 대한 커밋 내용을 정리해주면 되는 것이다.

profile
v ^_^ v

0개의 댓글