2012-04-09 3 views
35

ho solo padrone ramo e im ottenendo questo errore ogni volta che provo a "git pull":errore Git su git pull (in grado di aggiornare ref locale)

error: Couldn't set refs/remotes/origin/master 
From /var/lib/git/xxx/project 
! a0f80ea..49177a3 master  -> origin/master (unable to update local ref) 

e quando lo faccio "origine di pull git master" ottengo:

error: Couldn't set ORIG_HEAD 
fatal: Cannot update the ref 'ORIG_HEAD'. 

ho cercato, ma non posso trovare il motivo per cui

+2

Dove si trova il repository locale? L'hai creato come utente diverso da quello che stai usando per eseguire il pull? Sembra un problema di autorizzazione dei file. – tpg2114

+0

Sì, hai ragione dopo che hai detto che il proprietario dei file di progetto era un altro utente, ora la mia domanda sembra così folle, ma tu mi hai dato la risposta, per favore fallo una risposta per sceglierla come la migliore;) – user115561

+0

per favore @ tpg2114 aggiungi questo come una risposta per sceglierlo – user115561

risposta

6

verificare che l'utente che sta eseguendo il git pull è lo stesso utente che ha creato il repository. Le autorizzazioni del file non sono corrette.

+0

Per me ho dovuto cambiare il proprietario dei file nel repository che stavo cercando di inserire l'utente corretto con chown. Penso che questo sia fondamentalmente quello che stavi dicendo anche se non era ovvio per me quando ho letto questo. – Dee

+0

Sono d'accordo con questo, controlla che il proprietario e il gruppo siano impostati all'utente che vuole inserire il repository ".git" (succede se hai tirato un ramo che è "root") un "sudo chown -R" ha fatto il lavoro nel mio caso. –

0

Questo errore con (impossibile aggiornare ref locale) può verificarsi anche se di recente sono state modificate le password e sono presenti alcuni elementi di fantasia che integrano gli accessi di Windows e Linux.

4

Ho trovato lo stesso messaggio di errore che cercava di prelevare da un Bitbuck Repo nella mia copia lokal. C'è anche un solo Branche Maestro e il comando git pull origin master portare a questo messaggio di errore

From https://bitbucket.org/xxx 
* branch   master  -> FETCH_HEAD 
error: Couldn't set ORIG_HEAD 
fatal: Cannot update the ref 'ORIG_HEAD'. 

soluzione come segue

  1. git reflog trovare il numero dell'ultimo commit
  2. git reset --hard <numnber> ripristinato l'ultimo commit
  3. git pull origin master tirare di nuovo senza errore
+0

Dai a questo uomo le campane, la migliore risposta – surfer190

94

Il mio team e io ci siamo imbattuti in questo errore, incapace di aggiornare il riferimento locale, quando faccio un pull in SourceTree.

Abbiamo usato:

git gc --prune=now 

Questo rimuove tutti gli oggetti di riferimento duplicati che dovrebbe risolvere il problema.

Qui ci sono alcuni link dove si può imparare di più su riferimenti Git e potature:

git tip of the week

git-prune documentation

git references

+0

Ha funzionato anche per me, stesso messaggio, Sourcetree su Windows 7 –

+0

Questo comando ha funzionato in modo eccellente..grazie –

18

ho risolto, come di seguito:

git remote prune origin

+1

Eureka! Ha funzionato davvero. Ha qualcosa a che fare con i rami rinominati a distanza o qualcosa del genere. Non ho intenzione di provare a spiegarlo. – TheSoftwareJedi

+0

Questo lo ha fatto per me, 'git gc --prune = now' non ha fatto nulla –

1

Clona di nuovo il repository e copia la cartella .git nel progetto interrotto.

0

Questo è successo a me su OSX in cui utilizzo un file system senza distinzione tra maiuscole e minuscole. In qualche modo un altro sviluppatore ha spinto un ramo con lo stesso nome ma caso diverso: My-Branch vs my-branch.

ho già avuto My-Branch controllato e ottenuto l'errore "in grado di aggiornare ref locale" quando ho fatto un pull probabilmente perché il file system pensa My-Branch == my-branch.

Dal momento che utilizziamo Github, è possibile risolvere il problema eliminando uno dei rami tramite la GUI di Github.

+0

Nel mio caso, entrambi i rami in conflitto appartenevano a un altro utente, quindi non sono riuscito a eliminarne uno. Invece, ho cancellato il file ref file sotto .git \ refs \ remotes, e questo lo ha risolto (temporaneamente - il problema tornerà ogni volta che estraggo finché l'altro utente non cancella uno dei suoi rami). –

0

Parlare da un utente PC - Riavviare.

Onestamente, ha funzionato per me. Ho risolto due strani problemi del git che pensavo fossero corruzioni in questo modo.

0

Ho avuto lo stesso problema sul mio server debian in quanto il disco è pieno. Nessun file temporaneo può essere creato come spazio non disponibile sul dispositivo. Dopo aver pulito alcuni file, ha funzionato bene.