2013-08-26 100 views
3

在提交過程中斷電後,我的git存儲庫中的某個分支遭到損壞。我做了git fsck --full並刪除了所有空對象文件,直到fsck遞給我:將破碎的git分支設置爲分離的頭

Checking object directories: 100% (256/256), done. 
Checking objects: 100% (894584/894584), done. 
error: refs/heads/git-annex does not point to a valid object! 
Checking connectivity: 862549, done. 

然後我用git fsck --lost-found找到我的最後一個良好的懸掛提交的git-annex分支。我檢查了它。

我希望這是我的替代品git-annex HEAD。我試過git checkout -b git-annex,但得到該分支已經存在。所以我嘗試git branch -d git-annex,但得到error: Couldn't look up commit object for 'refs/heads/git-annex'

如何擺脫破損的git-annex分支以將其設置爲我想要的提交?我已經嘗試刪除.git/refs/heads/git-annex,但這不起作用。謝謝。

+0

當您想放棄舊分支提示時使用'-B',例如'git checkout -B git-annex 1a2b3cd' – jthill

回答

3

這對我的作品(「作弊」來插入一個破碎的分支,並試圖刪除它時,看到了同樣的錯誤之後):

git branch -f broked HEAD # or some other valid point 
git branch -d broked 

第二個命令的抱怨,因爲它會刪除破碎的裁判。 git/packed-refs(這是我認爲它必須是刪除.git/refs/heads/git-annex無用的地方)。 (但是分支名稱「git-annex」讓我想知道你是否在使用git-annex,比如在回購站之外存儲大文件的東西,我自己並沒有使用過,也不確定這是否會改變任何內容。)

+0

其實我所需要的只是第一個命令,我可以用它來設置'git-annex'給懸掛提交。現在'git fsck'是乾淨的。感謝那。 我的確在使用git-annex,但我確信在這種情況下這不會改變任何東西。 –