2012-12-31 8 views
7

Ho bisogno di aiuto per risolvere un errore quando spingo un ramo dal mio repository locale a una pen drive. Credo che il problema sia stato causato dalla commutazione avanti e indietro tra diverse unità. In particolare, ne ho perso uno e ho iniziato a usare un sostituto. Poi, quando ho trovato l'originale, sono tornato indietro. Ora sembra che alcuni dei miei ref/teste siano incasinati. Per esempio, io ottengo il seguente output quando provo a spingere un ramo:Errore "impossibile bloccare"

$ 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/' 
$ 

Se ho capito bene, questo dice che refs/teste/android-lite non esiste in origine. Tuttavia, sono confuso perché git non crea un nuovo ramo. C'è qualcosa nel mio repository locale che indica che il ramo Android-lite esiste già in origine?

+4

Puoi pulire il tuo repository con 'git gc' e' git remote prune'. – madhead

risposta

2

Se il debug repo a distanza è troppo complesso (come in this question, con git gc, git prune, git fsck, ...)), è comunque possibile:

  • git bundle tuo repo corrente, che vi darà solo un file,
  • copiare che un file sul disco remoto
  • clone git da quel file fascio
  • impostare l'indirizzo remoto corrente a quello nuovo percorso

Questo è un po 'come "How to synchronize two git repositories", e l'utilizzo di un pacchetto per questa attività è per assicurarsi che non si abbia una copia di errore di file.

+0

Grazie per i suggerimenti. Per enfatizzare un dettaglio nella mia domanda: il repository remoto è su una pen drive collegata al mio computer. Posso facilmente 'cd' direttamente al repository remoto e manipolarlo da lì. Quindi se c'è una semplice soluzione che manipola direttamente il telecomando, sono tutto per quello. –

+0

@ Code-Guru Ho collegato alla domanda che spiega il comando che puoi provare a eseguire il debug. Per quanto riguarda il mio suggerimento, utilizzerei ancora un bundle per inizializzare un repository pulito. O è possibile clonare il repository locale direttamente su detta pen drive. – VonC