我使用的是Ubuntu 14.10(64位),git 2.1.0版。這是一個已經存在好幾年的存儲庫,並且最近開始出現問題。我的git存儲庫如何被破壞?
有時我會更改分支,編輯文件和輸入git狀態。它會顯示一堆文件爲「修改」,實際上根本沒有改變。
如果我鍵入以下內容:
$ git commit -am "fixed sms message"
我得到的錯誤是這樣的:
error: short read No such file or directory
error: globalstatic/images/console/avatar_f.gif: failed to insert intodatabase
error: unable to index file globalstatic/images/console/avatar_f.gif
fatal: updating files failed
如果我什麼都不做除了按向上箭頭鍵,然後按回車一次,我會得到關於git status
中顯示的下一個文件的錯誤,該文件從未真正改變過。我可以這樣做,直到我用盡了git status
中沒有更改的文件列表,然後它將正確提交。
git fsck --full
確實報告已發現問題,但實際上並未解決任何問題。我只需要繼續嘗試提交,直到它工作。下面是輸出的git fsck --full
時,它給我的問題:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (120625/120625), done.
dangling tag c7539416829fb0748bc32dda3beb386bac46ea9a
dangling blob 88a0700db2a75e6ea2b14b9a5af15ece63a80805
dangling blob f4c664b0044f3d5efff1148717dc68b940e08574
dangling blob 1bf6185091177fd5a496f5bf031f4d666fec92da
dangling commit fee4bdcc078789a3745aa1311f128a6b61a81736
dangling blob 9f14e68da29d49895b1ea303ed33cb390fc56b76
dangling blob 784a02e974b81f35952fb7c31bf2dcb1a7bfeda8
dangling blob 9e92d6cf395206152123f9a29edb95652114fd34
dangling commit 1294f626dcb76cafa560f65792517655fb8a52ae
dangling blob bceb1adde285e71109723211a1bcb5b0fa126681
dangling tag 19f4be8e7b53465b13359bc4350b5e87c5942560
dangling blob 93f96a3b5e995032a50723af796dab9ae36fb974
dangling blob a25bdfab82fef920935478ee2cefe4dc2e81bbf6
dangling blob af7187350341f3d7795d35cc1f0cee78eb9f9fdf
dangling blob e2a1db9e3d3d438c8b03cb6254ca492e505be6f8
如果我運行它不止一次,我得到了同樣的信息。沒有什麼變化。
這是怎麼回事?
檢查文件系統和驅動器的時間,我想......不僅僅是回購。特別是因爲它抱怨工作目錄中的文件(除了'git fsck'問題)。 – twalberg 2015-02-09 21:33:44
存儲哪種文件系統?它是由Dropbox同步的嗎? – jszakmeister 2015-02-09 22:06:46
其實,更多的看,它看起來不像你的回購是腐敗的。懸掛的物體可能是分支不再存在的結果,也可能是重新分配工作的結果。懸掛標籤有點可疑,但可能是因爲您在路上某處刪除了標籤。似乎發生的事情是,Git不會承諾回購。您可以嘗試在命令行的開頭添加'GIT_TRACE = 2'來獲取更多有關正在發生的事情的更多信息。 – jszakmeister 2015-02-09 22:10:48