2012-12-31 79 views
7

我需要一些幫助解決錯誤,當我從本地回購分支推到拇指驅動器。我相信這個問題是由不同驅動器之間來回切換造成的。特別是,我失去了一個,並開始使用替代品。然後,當我找到原來的我切換回它。現在看來我的一些裁判/頭都搞砸了。例如,我得到下面的輸出,當我試圖推動一個分支:「未能鎖定」錯誤

$ git push origin android-lite 
Counting objects: 111, done. 
Compressing objects: 100% (98/98), done. 
Writing objects: 100% (109/109), 29.63 KiB, done. 
Total 109 (delta 40), reused 0 (delta 0) 
error: unable to resolve reference refs/heads/android-lite: No such file or directory 
remote: error: failed to lock refs/heads/android-lite 
To /media/2AC0-E4E2/devel/src/java/bbct/ 
! [remote rejected] android-lite -> android-lite (failed to lock) 
error: failed to push some refs to '/media/2AC0-E4E2/devel/src/java/bbct/' 
$ 

如果我理解正確的話,這是說裁判/頭/ Android的精簡版中不存在的起源。然而,我很困惑爲什麼git不會創建一個新的分支。在我的本地回購中是否有東西表明android-lite分支已經存在於原始位置?

+4

你可以用'git gc'和'git remote prune'清理你的repo。 – madhead

回答

2

如果調試遠程回購過於複雜(如this question,與git gcgit prunegit fsck,...)),你還可以:

  • git bundle當前的回購,只會給你一個文件,
  • 複製遠程驅動器從包文件
  • 設置當前遠程地址到新的路徑
  • 混帳克隆上一個文件

這有點像「How to synchronize two git repositories」,並且使用一個包來執行此任務是確保您沒有任何文件錯誤副本。

+0

感謝您的建議。爲了強調我的問題中的一個細節:遠程回購是插在我的電腦上的拇指驅動器。我可以直接將'cd'直接轉到遠程倉庫並從那裏操作。所以,如果有一個簡單的解決方案直接操縱遙控器,我就是這麼做的。 –

+0

@ Code-Guru我已鏈接到解釋可嘗試調試的命令的問題。關於我的建議,我仍然會使用一個包來初始化一個乾淨的回購。或者你可以直接在你的拇指驅動器上克隆你的本地回購。 – VonC