Linux,Unix,BSD

git push error - sha1 file '<stdout>' write error: Broken pipe

채윤아빠 2021. 10. 5. 18:42
728x90
반응형

문제점 및 증상

프로젝트에서 수정 작업을하고 난 후 GitLab 저장소에 이미지 약 100여개를 추가하고, "git push"를 하였더니 아래와 같은 오류가 발생하였습니다.

$ git push
Enumerating objects: 74, done.
Counting objects: 100% (72/72), done.
Delta compression using up to 12 threads
Compressing objects: 100% (68/68), done.
client_loop: send disconnect: Connection reset by peer
Wsend-pack: unexpected disconnect while reading sideband packet
fatal: sha1 file '' write error: Broken pipe
fatal: the remote end hung up unexpectedly

이것 저것 시도를 해 보았지만, 위와 같은 오류가 계속 발생하며 정상적으로 push가 이루어지지 않았습니다.

해결 방안

다음과 같이 GitLab 저장소 연결을 ssh를 통하여 처리하고 있었습니다.

$ git remote -v
origin  ssh://git@my-gitlab.kr/web/www.git (fetch)
origin  ssh://git@my-gitlab.kr/web/www.git (push)

혹시나 하고, 다음과 같이 ssh 가 아닌 https 저장소 주소로 변경 후, push를 하였더니 정상적으로 적용되었습니다.

$ git remote set-url origin https://my-gitlab.kr/web/www.git

$ git push
Enumerating objects: 74, done.
Counting objects: 100% (72/72), done.
Delta compression using up to 12 threads
Compressing objects: 100% (68/68), done.
Writing objects: 100% (68/68), 17.19 MiB | 5.84 MiB/s, done.
Total 68 (delta 5), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for dev, visit:
remote:   http://my-gitlab.kr/web/www/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote:
To https://my-gitlab.kr/web/www.git
   15ed651..977d70d  dev -> dev

물론 위와 같이 https로 저장소 주소를 변경하면, push나 pull시에 사용자 계정 정보를 계속 입력해 줘야 하는 불편이 생깁니다.

 

다시 아래와 같이 원래 저장소 주소로 변경하면 계정 정보의 입력없이 git 저장소를 관리할 수 있습니다.

$ git remote set-url origin ssh://git@my-gitlab.kr/web/www.git

결론

특정 프로토콜에서 git push 오류가 발생하면, 다른 형식의 저장소 주소로 해당 버전을 push하고 다시 원래 주소로 설정하면, 위와 같은 git push 문제를 해결할 수 있습니다.