git

Git: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400

@๋‚จ์ œ์ด ยท 2024๋…„ 08์›” 30์ผ ยท 3๋ถ„
giterrorrpc failedhttp 400 error

Git Push ๋ฌธ์ œ

git commit ์„ ์ง„ํ–‰ํ•˜๊ณ ๋‚˜์„œ push ๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

image

์‹ค์ œ git log ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

[info] error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date

HTTP 400 ์—๋Ÿฌ๋Š” Bad Request ์—๋Ÿฌ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๊ณ  ์•„๋ฌด๋ž˜๋„ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ ๋‚ด๊ฐ€ push ํ•˜๋ ค๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ๊ทธ๋Ÿฐ๊ฑด ์•„๋‹Œ๊ฐ€? ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
๊ทธ๋ž˜์„œ ํ•ด๋‹น ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๊ด€๋ จํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์›์ธ๊ณผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์•˜๋‹ค.


๋ฌธ์ œ ์›์ธ ํŒŒ์•…

์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์˜ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•œ ๋ฌธ์ œ์˜ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

  • push ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ ๋ฌธ์ œ
  • ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ
  • Git ์„œ๋ฒ„ ๋ฌธ์ œ
  • Git Repository ์— ๋Œ€ํ•œ ๊ถŒํ•œ ๋ฌธ์ œ

๋‚˜๋„ ์‚ฌ๋žŒ๋“ค์ด ๋งํ•œ ์›์ธ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.


ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ฐพ๊ธฐ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ๋„ํ•ด๋ณด๋ผ๊ณ  ํ•œ๋‹ค.

  • HTTP ๋ฒ„ํผ ํฌ๊ธฐ ๋Š˜๋ฆฌ๊ธฐ
  • ์ž‘์€ ์‚ฌ์ด์ฆˆ๋กœ ํ‘ธ์‹œํ•ด๋ณด๊ธฐ
  • ๋ชจ๋“  ์„œ๋ฒ„ ์ข…๋ฃŒํ•˜๊ธฐ
  • Git Repository ์—ฐ๊ฒฐ ๋‹ค์‹œํ•˜๊ธฐ
  • Git Repository ๊ถŒํ•œ ์—ฐ๊ฒฐ ๋‹ค์‹œํ•˜๊ธฐ
  • Github ์— ๋ฌธ์˜ํ•˜๊ธฐ

๋‚˜๋Š” ๋จผ์ € push ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

๊ธฐ์กด์— push ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ commit ๋‚ด์—ญ๋“ค์„ undo ํ•˜๊ณ ๋‚˜์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ ๋‚˜์„œ commit ํ•˜๊ณ  push ํ•ด๋ณด์•˜๋‹ค.
๊ฐ„๋‹จํ•œ ์ˆ˜์ • ๋‚ด์šฉ๋งŒ push ํ•˜๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.

HTTP ๋ฒ„ํผ ๋Š˜๋ฆฌ๊ธฐ

๊ทธ๋ž˜์„œ ๋‹ค์‹œ commit ํ•˜๊ณ ๋‚˜์„œ push ํ•˜๋‹ˆ ๋™์ผํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฒฐ๊ตญ์—๋Š” ๋ฒ„ํผ ํฌ๊ธฐ ๋ฌธ์ œ์ธ๊ฑด๊ฐ€ ํ•˜๋Š” ์ƒ๊ฐ์— ์ฐพ์€ ๊ธ€ ์ค‘์—์„œ http ๋ฒ„ํผ๋ฅผ ๋Š˜๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ํ•ด๋ณด์•˜๋‹ค.

์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฒ„ํผ ์‚ฌ์ด์ฆˆ๋ฅผ 500MB ๋กœ ๋Š˜๋ ค์ฃผ์—ˆ๋‹ค.

git config http.postBuffer 524288000

๋ฐ˜๋Œ€๋กœ ์„ค์ •์„ ์ง€์šฐ๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ผ๋ฅด ํ†ตํ•ด ์ œ๊ฑฐํ•ด์ค€๋‹ค.

git config --global --unset http.postBuffer

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•˜๋‹ˆ ์ •์ƒ์ ์œผ๋กœ push ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค!
๊ฒฐ๊ตญ ๋‚ด ๋ฌธ์ œ๋Š” push ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ๋„ˆ๋ฌด ์ปค์„œ push ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด์—ˆ๋‹ค. ์•„๋งˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ™์ด ์˜ฌ๋ ค์„œ ๊ทธ๋ ‡ ๊ฒƒ ๊ฐ™์€๋ฐ.. ์ €๋ฒˆ์—๋Š” ์™œ ์ •์ƒ์ ์œผ๋กœ push ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒŸ๋‹ค.

์ดํ›„ ์ฐพ์€ ๋‚ด์šฉ์ธ๋ฐ ํ˜น์‹œ git object ์บ์‹œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ ๋‚˜์„œ ์‹œ๋„ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

git gc --prune=now

์ผ๋‹จ์€ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ์ปค๋ฐ‹ ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ์–ผ๋งˆ๋‚˜ ๋˜์—ˆ๊ธธ๋ž˜ ์•ˆ๋˜์—ˆ๋Š”์ง€ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

๋จผ์ € ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ์ตœ๊ทผ commit ๋‚ด์—ญ์„ ํ†ตํ•ด commit hash ๊ฐ’์„ ์•Œ์•„๋‚ธ๋‹ค.

git log --oneline

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

git cat-file -p <commit-hash>

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ปค๋ฐ‹ ํŠธ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

$ git cat-file -p 15a210b
tree 564b23648ae9e4f50d12a5b58c9d7d1874b3e396
parent a7fdc8c018d026dffa15648ce89bb46951a1bc68
(...)

์ด์ œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ

git cat-file -s <tree-hash>

๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด 622 ๋ฐ”์ดํŠธ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ํฌ์ง€ ์•Š์•„์„œ ๋ญ”๊ฐ€ ์‹ถ์—ˆ๋‹ค...

$ git cat-file -s 564b23648ae9e4f50d12a5b58c9d7d1874b3e396
622

์ด์Šˆ ์ •๋ฆฌ

์ •๋ฆฌํ•ด๋ณด๋ฉด Git repository ์— commit ํ•œ ๋‚ด์šฉ์„ push ํ•˜๋Š” ๋„์ค‘์— push ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์ด ์ด์Šˆ์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ push ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€๋‹ค.

์•„๋งˆ push ํ•˜๋ ค๊ณ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ด๋ฏธ์ง€๊ฐ€ ๋งŽ์•„์„œ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋‚˜๋Š” git http buffer ๋ฅผ ๋Š˜๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

git config http.postBuffer 524288000

๊ทธ ๋ฐ–์—๋„ ์ •๋ง ๋‹ค์–‘ํ•œ ์›์ธ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.


์ฐธ๊ณ 

https://stackoverflow.com/questions/77856025/git-error-rpc-failed-http-400-curl-22-the-requested-url-returned-error-400-se
https://stackoverflow.com/questions/62753648/rpc-failed-http-400-curl-22-the-requested-url-returned-error-400-bad-request
https://toypanda.tistory.com/222
https://onlydev.tistory.com/130
https://g1-kim.tistory.com/entry/git-push-400-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D-%EC%8B%9C-ssh-%EB%A1%9C-%EC%97%B0%EA%B2%B0-%ED%95%B4%EA%B2%B0%EB%B0%A9%EC%95%88
https://hyeonstone.tistory.com/entry/Git-%EC%98%A4%EB%A5%98-The-requested-URL-returned-error-400-%EC%98%A4%EB%A5%98