Joonas' Note
Joonas' Note
git push 시 RPC failed; HTTP 400 해결법 본문
문제
git push 를 하다보면 아래와 같이 RPC failed 를 이유로 실패하는 경우가 있다.
$ git push origin
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
Delta compression using up to 10 threads
Compressing objects: 100% (20/20), done.
error: RPC failed; HTTP 400 curl 18 HTTP/2 stream 7 was reset
send-pack: unexpected disconnect while reading sideband packet
Writing objects: 100% (20/20), 342.08 MiB | 21.30 MiB/s, done.
Total 20 (delta 10), reused 0 (delta 0), pack-reused 0
fatal: the remote end hung up unexpectedly
Everything up-to-date
메시지를 자세히 보면, 342 MiB 정도의 Writing object 단계를 지나서 발생했음을 알 수 있다.
해결 방법
git 은 전송 가능한 버퍼 최대 사이즈의 기본값을 1MiB 로 두고 있다.
따라서 다음과 같이 HTTP 로 전송 가능한 바이트를 500MB 로 늘리는 법이다.
$ git config http.postbuffer 524288000
그럼에도 불구하고
하지만 위와 같이 500MB로 제한을 올렸다고해서 문제가 해결되지 않을 수 있다.
왜냐하면 git은 파일의 최대 전송 크기를 100MB을 기본값으로 하기 때문에, git LFS(Large File System) 설정이 필요하다.
$ git push
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
Delta compression using up to 10 threads
Compressing objects: 100% (20/20), done.
Writing objects: 100% (20/20), 342.08 MiB | 23.21 MiB/s, done.
Total 20 (delta 10), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (10/10), completed with 3 local objects.
remote: error: Trace: e8602a1dfaf4015bf614f80fa9d794ac8d871b63bbe56557acbdd5ebac858b0b
remote: error: See https://gh.io/lfs for more information.
remote: error: File backend/cnn/unique-disco-14.ckpt is 342.80 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/joonas-yoon/quick-draw-clone.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/joonas-yoon/quick-draw-clone.git'
히스토리에서 큰 파일 제외시키기
꼭 업로드하지 않아도 되는 파일이라면, 로컬 git 브랜치에서 (용량이 큰) 해당 파일이 추가된 커밋을 제거하는 방식으로 우선 오류 없이 push 할 수 있다.
직전 커밋에 파일이 추가된 상황이라면 git commit (amend) 로 해결할 수 있지만, 조금 더 이전 커밋에 있다면 interactive rebasing 으로 문제의 커밋을 drop 하여 해결할 수 있다.
참고
'개발' 카테고리의 다른 글
git network connection 오류 추적하기 (0) | 2024.06.20 |
---|---|
Quick, Draw! 클론 코딩 해보기 (0) | 2024.05.26 |
All about git - 원격 저장소와 작업하는 법(fetch/push/pull) (0) | 2023.08.20 |
All about git - 충돌(conflict)과 merge/rebase 쉽게 이해하기 (0) | 2023.08.14 |
All about git - 상태(status) 관리하기 (0) | 2023.07.15 |
Comments