2010-10-23 20 views
12

Tengo un repositorio base que vive en una UNC \ machine \ share .... etc. Tengo un clon local en el que trabajo en la rama principal y en ocasiones me uno a la rama "estable".Problemas de Git con git push --todos

generalmente hago un git push --all

para mover todos los cambios en todas las ramas hasta el servidor. Después de crear una nueva rama git branch MultiCompany

y luego empujando al servidor git push --all

que crea la rama en el servidor también. Hice un poco de experiencia, dedicados todos los cambios en la rama multiempresa y luego ha intentado realizar una git push --all

y obtuve el siguiente error:

[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' 

Traté de retroceder la última confirmación con git reset --hard HEAD^

y luego vuelve a intentar el empuje .....

[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'` 

Respuesta

6

hacer un git --full fsck en el repositorio remoto. El repositorio remoto puede haberse corrompido. Clona a otro desde el control remoto. Reemplace el control remoto original con este. Ahora debería poder presionar nuevamente. Algo le ha sucedido al repositorio remoto. Nada de lo que estás haciendo está fuera de línea con el uso regular.

3

Gracias, git fsck --full informado "colgando cometer"

ciruela modo git impactó el material infractor y llegué a escribir de nuevo. Btu al menos los árboles están resueltos ..

Gracias por la ayuda.

+2

So 'git gc' es :) – Wernight

15

Para el registro, creo que la causa principal de este problema fue la diferencia en mayúsculas entre los nombres de las sucursales locales y remotas, y la naturaleza insensible a mayúsculas y minúsculas del recurso compartido de Windows que alojó el repositorio remoto.

Acabamos de encontrar exactamente el mismo error y pudimos resolver el problema simplemente cambiando el nombre de la rama local para que coincidiera con el uso de mayúsculas de la rama remota existente.

Ver aquí how to rename a local branch.

En Windows, debido a la capitalización, es posible que tenga que tomar dos pasos:

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

¡Gracias! El mismo problema aquí ... gracias a tu comentario, finalmente podré solucionar el problema que tengo aquí :) – Guillermo

+0

No pude cambiar el nombre usando SourceTree ("la rama ya existe ...)", así que cambié el nombre a nombre de la sucursal temporal, eliminada de .git/refs/encabeza la carpeta que tiene las mayúsculas incorrectas, y luego renombra la rama para utilizar las mayúsculas y minúsculas correctas. –

5

un error que encontré estaba tratando de empujar una rama develop en un repositorio que tenía ramas nombradas: develop/1148 y develop/693. git no está bien con esto (se me olvida por qué), por lo que eliminar esas ramas (si es posible) solucionó este problema.

+1

Esta fue la solución para mí. Estaba intentando presionar 'dev' cuando existía una rama antigua llamada' dev/rob' en el control remoto. Ejecutando 'git push origen: dev/rob' primero lo arregló. – robbles

+0

Funcionó para mí también. Estaba intentando impulsar una rama llamada release/patch1 cuando una rama llamada release ya existía en el control remoto. –

+1

Git no permite tener una rama, una carpeta de rama y una etiqueta con el mismo nombre. TIL – Hannele