git fatal: the remote end hung up unexpectedly
이슈
여느 때와 같이 코드 수정 후 푸시를 때렸는데 왜 아직도 푸시를 안 때렸냐는 말을 들어버린 인피덕
또잉?
보니까 로그에 아래와 같은 에러가 발생했던 거시였다.
>_ git push origin main
Enumerating objects: 492, done.
Counting objects: 100% (492/492), done.
Delta compression using up to 10 threads
Compressing objects: 100% (345/345), done.
error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400
send-pack: unexpected disconnect while reading sideband packet
Writing objects: 100% (368/368), 17.07 MiB | 12.10 MiB/s, done.
Total 368 (delta 88), reused 0 (delta 0), pack-reused 0
fatal: the remote end hung up unexpectedly
Everything up-to-date
흠 보내다가 400 에러가 났고만
찾아보니 git push
할 때 전송되는 데이터의 크기가 크면 해당 에러가 발생할 수 있다고 한다.
해결
git이 http를 타고 코드를 원격 저장소에 push 할 때 한 번에 보낼 수 있는 데이터의 최대 크기가 기본 1MB라고 하니,
http.Buffer
크기를 늘려주도록 하자.
git config --global http.postBuffer 524288000 # global은 생략 가능
다시 push 때려보면 정상적으로 push가 되는 걸 확인할 수 있다!
그 외의 방법?
- push 할 때 데이터 압축을 진행하지 않고 보내기
네트워크가 불안정한 경우 압축하는 걸 패스하고 바로 올려버리는 방법
이 방법으로 하면 이미 원격 저장소에 있는 파일도 그냥 올려버린다고 한다.
내 케이스는 일단 압축은 잘 진행된 것으로 보여 패스한 방법이다.
git push --no-thin # thin pack 방식을 사용하지 않겠다는 의미
git-lfs
사용
풀 네임 Git Large File Storage
인 녀석으로,
용량이 큰 파일을 git이 관리하는 게 아니라 git-lfs가 관리하도록 하는 방법으로 볼 수 있겠다.
git lfs install
git lfs track "*.확장자" # 특정 확장자를 가진 파일을 lfs 서버에서 따로 관리
참고
- Chat GPT