2017-03-05 77 views
1

我在存儲庫中根據Vincent Driessen's model創建了多個分支。無法檢出特定分支

後發展的很長一段時間,當我使用git bash的branch命令,它讓我看到,

$ git branch 
    develop 
    f7-body-force 
    f8-eos 
    f9-contact-angle 
* f9-junk 
    master 

分公司f9-junkf9-contact-angle朵朵。現在f9-junk做,我想將它合併回f9-contact-angle,但想看看f9-contact-angle時,混帳給出了這樣的錯誤:

$ git checkout f9-contact-angle 
    fatal: reference is not a tree: f9-contact-angle 

檢查出一些其他分支也產生同樣的錯誤。所以,我嘗試了Visual Studio Git。再次出錯時出錯f9-contact-angle

An error occurred. 
Detailed message: The tip of branch 'develop' is null. 
There's nothing to checkout. 

問題是什麼?

+0

'git rev-parse f9-contact-angle'的輸出是什麼? – knittl

+0

哈希值:'be7f7eee1032b73019cd870e60d6b8ae661e0f6d' – Shaqpad

+0

你可以直接檢出哈希值嗎?雖然,如果分支名稱解析爲散列,那麼檢出分支名稱應該沒有問題 – knittl

回答

1

這聽起來像你的資料庫被損壞了(你的存儲驅動器上bitrot,誤刪除文件,...)

git rev-parse branchname應該告訴你哪個提交一個分支點。從理論上講,你應該能夠直接檢出該提交併使用像git cat-file -t commithash這樣的命令來獲取對象的類型(「引用不是樹」)。

運行git fsck將對存儲庫的數據庫文件執行完整性檢查。通常它只會打印良性的消息,如「dangling blob/tree/commit」,但是如果你得到「無效的sha1指針」或「丟失的提交」,那麼你的回購就壞了。您可能需要從備份中恢復(或遠程存儲庫)。

遠程存儲庫不應受到本地損壞的數據庫的影響(您將無法推送)。