2010-10-23 18 views
12

Ho un repository di base che vive su UNC \ machine \ share .... ecc. Ho un clone locale su cui lavoro nel ramo master e occasionalmente mi unisco al ramo "stabile".Problemi git con git push --all

di solito lo faccio un git push --all

per spostare tutti i cambiamenti in tutti i rami fino al server. Dopo aver creato un nuovo ramo git branch MultiCompany

e poi spingendolo al server git push --all

che crea il ramo sul server anche. Ho fatto qualche lavoro, impegnato tutti i cambiamenti nel ramo multisocietario e poi cercato di fare un git push --all

e ottenuto il seguente errore:

[email protected] ~/desktop/git sourcetree/maerekai.web.framework (multicompany) 
$ git push --all 
Counting objects: 28, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (22/22), done. 
Writing objects: 100% (23/23), 11.34 KiB, done. 
Total 23 (delta 8), reused 0 (delta 0) 
Unpacking objects: 100% (23/23), done. 
error: Ref refs/heads/multicompany is at bd5a32df35ce8d5ae30ce999af34c4c5f35581df but expected 0000000000000000000000000000000000000000 
remote: error: failed to lock refs/heads/multicompany 
To //pluto/users/cdturner/Git repositories/Maerekai.web.framework.git 
! [remote rejected] multicompany -> multicompany (failed to lock) 
error: failed to push some refs to '//pluto/users/cdturner/Git repositories/Maerekai.web.framework.git' 

ho cercato di tornare indietro l'ultimo commit con git reset --hard HEAD^

e poi ritentata la spinta .....

[email protected] ~/desktop/git sourcetree/maerekai.web.framework (multicompany) 
$ git push --all 
Total 0 (delta 0), reused 0 (delta 0) 
error: Ref refs/heads/multicompany is at bd5a32df35ce8d5ae30ce999af34c4c5f35581df but expected 0000000000000000000000000000000000000000 
remote: error: failed to lock refs/heads/multicompany 
To //pluto/users/cdturner/Git repositories/Maerekai.web.framework.git 
! [remote rejected] multicompany -> multicompany (failed to lock) 
error: failed to push some refs to '//pluto/users/cdturner/Git repositories/Maerekai.web.framework.git'` 

risposta

6

fare un --full git fsck sul repo remoto. Il repository remoto potrebbe essere stato danneggiato. Clona un altro dal telecomando. Sostituisci il telecomando originale con questo. Ora dovresti essere in grado di spingere di nuovo. Qualcosa è successo al repository remoto. Niente di ciò che stai facendo è fuori linea con l'uso regolare.

3

Grazie, git fsck --full riportato "penzoloni commettere"

prugna in modo git ha spazzato via la roba incriminato e ho avuto modo di scrivere di nuovo. Btu almeno gli alberi sono tutti risolti ..

Grazie per l'aiuto.

+2

Quindi 'git gc' è :) – Wernight

15

Per la cronaca, credo che la causa principale di questo problema sia stata la differenza di maiuscole tra i nomi dei rami locali e remoti e la natura insensibile alle maiuscole e minuscole della condivisione Windows che ha ospitato il repository remoto.

Abbiamo appena incontrato questo stesso errore ed è stato possibile risolvere il problema semplicemente rinominando il ramo locale in modo che corrispondesse alla maiuscola del ramo remoto esistente.

Vedere qui how to rename a local branch.

In Windows, per effetto della capitalizzazione, potrebbe essere necessario fare due passi:

git branch -m example foo 
git branch -m foo EXAMPLE 
+0

Grazie! Lo stesso problema qui ... grazie al tuo commento Finalmente sarò in grado di risolvere il problema che ho ottenuto :) – Guillermo

+0

Non ero in grado di rinominare usando SourceTree ("il ramo esiste già ...)", così ho rinominato in un nome di ramo temporaneo, cancellato da .git/refs/testa la cartella con la maiuscola non corretta, quindi rinominato il ramo per utilizzare la corretta maiuscola. –

5

un errore che ho trovato stava cercando di spingere un ramo develop in un repository che aveva rami con nome: develop/1148 e develop/693. git non è d'accordo con questo (ho dimenticato il motivo), quindi cancellando quei rami (se possibile) risolto questo hangup.

+1

Questa era la soluzione per me. Stavo cercando di spingere 'dev' quando sul telecomando esisteva un ramo antico chiamato' dev/rob'. L'esecuzione di 'git push origin: dev/rob' prima l'ha corretta. – robbles

+0

ha funzionato anche per me. Stavo cercando di spingere un ramo chiamato release/patch1 quando un ramo denominato release esisteva già sul telecomando. –

+1

Git non consente di avere un ramo, una cartella di diramazione e un tag con lo stesso nome. TIL – Hannele