天天看點

git 出現 error Missing tree 的處理辦法問題解決:

問題

公司搭建了 gerrit 代碼稽核伺服器.有較低的機率(目前團隊中出現過兩例),在 git push 送出時,出現如下錯誤:

git push --receive-pack='git receive-pack --reviewer [email protected] --reviewer [email protected]' review HEAD:refs/for/master
Counting objects: , done.
Writing objects: % (/),  bytes |  bytes/s, done.
Total  (delta ), reused  (delta )
error: unpack failed: error Missing tree d587458f56f4b1f9c492824a97dc717257516
fatal: Unpack error, check server log
To ssh://[email protected]:29418/xxxx_v_2_3.git
 ! [remote rejected] HEAD -> refs/for/master (n/a (unpacker error))
error: failed to push some refs to 'ssh://[email protected]:29418/xxxx_v_2_3.git'
           

再次送出也還是會出現同樣錯誤.

解決:

使用如下指令即可推送成功:

git push --no-thin review HEAD:refs/for/master
           

關鍵點是 –no-thin 選項:

預設情況下 git push 會在向伺服器推送時進行優化,以将所發送的包降低到最小. 做法是發送時忽略本地倉庫和遠端倉庫中共有的部分. 即 git push 預設是采用 –thin 選項的.

發生本文中出現的問題,貌似是因為某個 git 對象和伺服器不一緻了.

這時加上 –no-thin 參數,把該傳的都傳過去,問題就解決了.

參考的連結