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: 1, done.
Writing objects: 100% (1/1), 241 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
error: unpack failed: error Missing tree 129d587458f56f4b1f9c492824a97dc717257516
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 參數,把該傳的都傳過去,問題就解決了.

參考的鏈接

發佈了82 篇原創文章 · 獲贊 215 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章