[Git] 100MB가 넘는 대용량 파일 깃허브에 업로드하기 / 동료와 깃허브 연동하기 / 외장하드에서 깃허브 업로드하기

황성미·2024년 1월 30일
1
post-custom-banner

안녕하세요 여러분!!
제로베이스 데이터스쿨을 종강하고 저는
그동안 프로젝트했던 코드들을 깃허브에 정리하고 있습니다 :)

깃허브에 제일 문제가 되었던 상황을 소개해보려고 해요.

대용량 파일을 깃허브에 업로드하려고 하니 아래와 같이 에러가 뜨더라구요 😭

해결 방법을 바로 보고싶으신 분들은 목차 3. 깃허브 연동부터 업로드까지 전체 코드 정리를 참고 해주세요!


0. 동료들과 Github 연동하기(Collaborators)

먼저 같이 프로젝트 한 동료들과 Github를 연동하고 싶어서
Repository를 제가 만들고 동료들을 Collaborators로 추가해주었습니다.

1. Repository의 오른쪽 상단 점 3개 클릭 - Settings 클릭


2. 왼쪽 Collaborators 클릭 - 오른쪽 아래 초록색 Add people 클릭



3. 동료의 깃허브 이름을 검색 후 초록색 Select a collaborator above 클릭


4. 동료는 자신에게 온 알람을 수락!하기


5. 동료들의 이름 아래에 'Collaborator'라 뜨면 정상적으로 설정은 완료된 것


🔎 참고 자료

이것저것 구글링해보면 위 과정까지 하면
자동적으로 Collaborator로 등록이 되는거라고 하는데
동료들의 Repository에는 안 뜨는 현상이 있다고 하더라구요.

이 경우 동료들이 자신의 컴퓨터에 clone하고 commit 하면 정상적으로 동료들의 Repository에도 뜬다고 합니다!




1. 외장하드에서 깃허브에 업로드하기

저는 지금 노트북 용량이 부족해서 외장하드로 작업을 하고 있었습니다.

그래서 깃허브도 외장하드로 연동하고 싶었죠..
깃허브에 업로드 하기 위해 외장하드 폴더에서 git add . 와 같은 코드를 실행시키면 아래와 같은 문구가 뜨실 겁니다.

git config --global --add safe.directory '폴더 경로'

그러면 나타난 문구 고대로 복사 붙여넣기 해서 실행시켜주시면 되어요!

구글링해보았는데 과거 깃허브에 어떤 문제가 있었어서 Repository에 업로드 하기 전 사용해도 되는 폴더인지 안전 검사를 하기 위함이랍니다!!

🔎 참고 자료




2. 대용량 파일 업로드하기

깃허브의 하나의 난관을 넘었는데 다시 또 🚵🏻‍♀️산이 찾아왔죠... ㅎㅎ

제 파일은 현재 157MB 정도 되었는데 깃허브에는 최대 100MB 까지만 올라간다고 하더라구요??

2-1. Git LFS 설치

찾아보면 다들 Git Large File Storagelfs를 쓰라고 나옵니다.


📌 Git Large File Storage Download Page

Window인 저는 위 사이트를 이용해 다운 받아주었고

git lfs install 이라는 코드를 실행시켰을 때 아래와 같이 나온다면 정상적으로 다운받아진거라고 합니다!

🔎 Github Docs

2-2. 깃허브 업로드 코드

그리고 아래 코드를 따라서 실행시키면 됩니다.
먼저 제가 업로드할 내용에 대해 소개해드리자면
2. EDA 폴더 안에 2. EDA.ipynb 파일이 있어 2. EDA 폴더 자체를 업로드하려고 했습니다!

📌 대용량 파일을 깃허브에 업로드하는 코드 전체

// Step1. lfs로 관리할 대용량 파일 설정해주기
$ git lfs track 파일명

// git lfs track "2. EDA/2. EDA.ipynb"
// 저는 폴더 안에 대용량 파일이 있기 때문에
// 위와 같이 경로까지 설정해주었습니다.


// Step2. 변경된 내용 스테이징
$ git add .gitattributes
$ git add 파일명

// git add "2. EDA/2. EDA.ipynb"

// Step3. 커밋
$ git commit -m "커밋 메세지"

// Step4. 푸시
$ git push origin main

제가 엄청 헤맸던 곳은 바로 Step1 부분이었습니다.
저 부분에서 폴더를 업로드할 거라고 git lfs track "2. EDA" 라고 실행시켰더니 gitattributes 파일은 생성되었지만 계속 똑같은 에러가 뜨더라구요.

여러분은 🌟🌟🌟 무조건 대용량 파일 그 자체!!! 경로🌟🌟🌟를 적어주셔야 합니다.


2-3. 코드를 여러 번 실행시킨 내가 자주 사용한 코드

이게 계속 실패하다보면 여러 코드를 사용하게 되고
이 때 코드가 얽히게 되면서 실행이 안 되는 경우도 있다.

여러 번 시도하면서 코드가 얽히지 않도록 하기 위해
자주 사용했던 코드를 적어보자면...

이미 파일을 commit 했을 때

commit을 취소하고 해당 파일을 staged 상태로 바꿔주기

$ git log //commit 목록 확인
$ git reset --soft HEAD^ // commit을 취소하고 해당 파일들은 staged 상태로

추적 그만하라고 알려주기

$ git lfs untrack "파일 경로"

2-4. 업로드 완료

아래 두 참고 자료를 통해서 이것 저것 시도해보고 드디어 업로드를 완료했다🥰 업로드 되는 순간 돌아가는 코드는 첫 느낌부터 달랐다는...!! (이번엔 무조건 된다...!는 느낌이 뽝!! 왔어요 ㅎㅎ)

🔎 Git LFS 간단 정리 사이트
🔎 Git LFS 사용시 발생하는 여러 오류 코드들에 대한 해결 방법 사이트




3. 깃허브 연동부터 업로드까지 전체 코드 정리

# Repository 복제하기 
// Step0. 깃허브 Repository를 clone 할 폴더로 이동하기

// Step1. user.name, user.email 입력해주기
$ git config --global user.name castlemi99
$ git config --global user.email nabi4442@naver.com

// Step1-1. 외장하드의 경우 해당 경로가 안전하다는걸 알려주기
$ git config --global --add safe.directory "외장하드 경로"
    // 나의 경우
    // $ git config --global --add safe.directory "D:/제로베이스데이터스쿨/Github_castlemi99"
    
// Step2. Repository clone하기
$ git clone Repository주소
    // 나의 경우
    // $ git clone https://github.com/castlemi99/Final_Project.git



# 대용량 파일 업로드하기 
// Step3. Git LFS 설치 및 설치 확인하기
$ git lfs install

// Step4. Git LFS 파일 추적 설정
$ git lfs track 파일명
    // 나의 경우
    // $ git lfs track "2. EDA/2. EDA.ipynb"

// Step5. 변경된 내용 스테이징
$ git add .gitattributes
$ git add 파일명
    // 나의 경우
    // $ git add .gitattributes
    // $ git add "2. EDA/2. EDA.ipynb"

// Step6. 커밋
$ git commit -m "커밋 메세지"
    // 나의 경우
    // $ git commit -m "EDA Update, 240130"

// Step7. 푸시
$ git push origin main
// 아래와 같이 동작하면서 업로드 됨
Uploading LFS objects: 100% (1/1), 161 MB | 352 KB/s, done.
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 583 bytes | 583.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/castlemi99/Final_Project.git
   51c0d3b..678efa6  main -> main




원래 VSCode에서 바로 깃허브에 연동되게 하기 위해서
이것 저것 찾아보았는데 결국 대용량 파일 때문에 코드를 통해 업로드해따.. 😂

연동하기 위해 참고한 사이트도 첨부해둬야지!!(언젠간 쓰겠지...)
🔎 참고 자료 1
🔎 참고 자료 2

profile
데이터 분석가(가 되고픈) 황성미입니다!
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 6월 29일

감사합니다!

답글 달기