2012-10-07 12 views
99

estoy usando Dropbox para sincronizar un repositorio git, pero ahora cuando intento y push estoy consiguiendo un error:Git fatal: Referencia tiene un formato no válido: 'refs/heads/master

fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)' 

Por lo tanto, Parece que Dropbox detectó un conflicto y creó una copia. Ok, no hay problema, así que eliminé el archivo en conflicto. Aún así, obteniendo el error de git anterior.

$ git checkout master 
    M index.html 
    Already on 'master' 
$ git add . 
$ git commit -a -m "Cleanup repo" 
    [master ff6f817] Cleanup repo 
    1 file changed, 5 insertions(+), 5 deletions(-) 
$ git push 
    fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)' 
    The remote end hung up unexpectedly` 

¿Cómo puedo reparar esto? Gracias.

Respuesta

0

Pruebe una git checkout master primero en la saludable y bien nombrada sucursal.

+0

Salida actualizada en la publicación original. – Justin

+0

Hm, ¿podrías probar un 'full git push origin master' y también pegar la salida de' git branch -a' por favor? – poke

+0

Mismo error aquí ... ¡intentar 'git branch -a' da como resultado este mismo error! – trusktr

42

El fichero en conflicto podría estar en varios lugares, Me gustaría ver en:

.git/logs/refs/remotes/origin/ 
.git/logs/refs/heads/ 
.git/refs/remotes/origin/ 
.git/refs/heads/ 

O lo podría hacer en cualquier parte del .git subdirectorio: find . -name '*conflicted*'

O, de lo contrario, la lista de las ramas activas con git branch -a y eliminar (git branch -d) cualquier cosa sospechosa.

+0

Hay archivos en conflicto en todas partes dentro de '.git'. Revisé y borré todos, y está arreglado. Gracias. – Justin

+2

@Justin Me alegro de poder ayudar. Si esta respuesta o cualquier otra resolvió su problema, márquelo como aceptado. –

+2

En Mac OS X use: 'find. -name '* conflicted *' '(Edit: format) – xgMz

7

Pude borrar todos los archivos en conflicto de mi carpeta .git, pero seguí recibiendo errores sobre los archivos que ya no existían.

La solución para mí fue abrir .git/refs/packed_refs y borrar líneas que contenían el texto "en conflicto".

177

haga una copia de seguridad de su repositorio si no está seguro de esto, porque estos comandos son irreversibles.

primero, vaya a su directorio de repositorios.

cd myrepo 

continuación, busca de forma recursiva para los archivos en conflicto y eliminarlos

find . -type f -name "* conflicted copy*" -exec rm -f {} \; 

por último, eliminar las referencias "conflicto" de archivo repleto de referencias de git

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs 
+1

Tuve el mismo problema y esto lo solucionó. ¡Gracias! – erik

+0

Esto también lo solucionó. ¡Gracias! – cecconeurale

+0

para usuarios de macos 'encontrar. -type f -name "* conflicted copy *" -delete' – Soyoes

8

Esto también sucede en nuestro equipo cuando mi colega empuja sus cambios y apaga la PC antes de que se actualice Dropbox.

Lo resolví tan simplemente.

Acaba de eliminar la copia en conflicto. (Copia en conflicto de XXXX aaaa-mm-dd)

Y hagalo normalmente.

Tenga en cuenta que mi colega tuvo los cambios antes de que se estropeara. Y empujó sus cambios nuevamente. Esta vez no hay cierre.:)

+1

funcionó absolutamente perfecto para mí :) thx - para mí dropbox creó un extraño nombre de archivo de cadena que no era compatible con "actualizar" – cV2

+1

¡Esto funcionó para mí! Había un archivo con "copia en conflicto" en el nombre en la carpeta/refs/heads y lo borraba, luego pull/push y todo estaba bien. ¡Gracias! – DiscDev

0

que estaba recibiendo el mismo error

fatal: Reference has invalid format: 'refs/heads/somebranch (1)'

para el siguiente comando

git branch 

Entonces, busqué erróneo nombre (nombre de la sucursal seguido por (1)) usando el comando

find . -name 'somebranch (1)' 

Y mostró el siguiente resultado

./.git/refs/heads/somebranch (1)

Cuál es alguna versión duplicada de alguna rama IMO. Por lo tanto, eliminado esta ejecutando el comando find después de eliminar

find . -name 'somebranch (1)' -print -exec rm -rf {} \; 

A continuación, el comando rama ejecutar correctamente

git branch 
0

Para mí estaba dando error: fatal: Reference has invalid format: 'refs/tags/r0.2:3'

Puede Vaya al archivo /.git/packed_refs y elimine la línea para refs/tags/r0.2:3

Luego comenzó a funcionar. Pero no sé por qué sucedió en primer lugar.

0

I encounterd el error similar, como

fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)' 

Simplemente eliminación del archivo .git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08) en el repositorio remoto Dropbox solucionó el problema.

Cuestiones relacionadas