[Git] git fatal: the remote end hung up unexpectedly

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

이 글의 저작권은 Attribution-NonCommercial 4.0 International 라이센스를 따릅니다. Attribution-NonCommercial 4.0 International