error: no se puede bloquear ref .. 'refs / tags' existe; no puede crear 'refs / tags /

Me aparece un extraño error de "can not lock ref" cuando trato de sacar los cambios de github. Intenté git gc y busqué errores similares pero no puedo encontrar una solución.

> git pull error: cannot lock ref 'refs/tags/v2.8': 'refs/tags' exists; cannot create 'refs/tags/v2.8' From github.com:k3it/qsorder ! [new tag] v2.8 -> v2.8 (unable to update local ref) error: cannot lock ref 'refs/tags/v2.9': 'refs/tags' exists; cannot create 'refs/tags/v2.9' ! [new tag] v2.9 -> v2.9 (unable to update local ref) 

Su Git se queja de que existe una reference (en lugar de un directory) llamada refs/tags . No está claro lo que crearía eso, pero vea si git rev-parse refs/tags produce una identificación hash. Si es así, esa reference debe desaparecer:

 git update-ref -d refs/tags 

después de lo cual la git fetch debería funcionar.

Si git rev-parse refs/tags falla (que debe refs refs/tags no debe ser un nombre válido), este no es el problema y no está claro cuál es el problema real.

error: no se puede bloquear ref 'refs / tags / v2.8': 'refs / tags' existe; no puede crear 'refs / tags / v2.8' de github.com:k3it/qsorder

Intenta borrar tu label local v2.8 y v2.9 y luego vuelve a tirar.

 $ git tag -d v2.8 $ git tag -d v2.9 $ git pull 

Para un trabajo rápido puedes usar

git push --delete origin 'v2.8'

git push --delete origin 'v2.9'

 #!/usr/bin/env bash echo "update-ref delete refs/tags" log="git-update-ref-errors.log" script="./git-update-ref-exist-tags-delete.sh" git_command="git update-ref -d refs/tags" echo "log errors from ${git_command} to ${log}" ${git_command} 2>&1 | > ${log} echo "show errors to ${log}" cat ${log} echo create ${script} touch ${script} echo "add execute (+x) permissions to ${script}" chmod +x ${script} echo "generate ${script} from errors log ${log}" ${git_command} 2>&1 | grep 'exists' | sed -n "s:.*\: 'refs/tags/\(.*\)' exists;.*:git tag -d '\1':p" >> ${script} echo "execute ${script}" ${script} echo fetch log="git-fetch-errors.log" script="./git-fetch-exist-tags-delete.sh" git_command="git fetch" echo "log errors from ${git_command} to ${log}" ${git_command} 2>&1 | > ${log} echo "show errors from ${log}" cat ${log} echo create ${script} touch ${script} echo "add execute (+x) permissions to ${script}" chmod +x ${script} echo "generate ${script} from errors log ${log}" ${git_command} 2>&1 | grep 'exists' | sed -n "s:.*\: 'refs/tags/\(.*\)' exists;.*:git tag -d '\1':p" >> ${script} echo "execute ${script}" ${script} git fetch echo pull log="git-pull-errors.log" script="./git-pull-exist-tags-delete.sh" git_command="git pull" echo "log errors from ${git_command} to ${log}" ${git_command} 2>&1 | > ${log} echo "show errors from ${log}" cat ${log} echo create ${script} touch ${script} echo "add execute (+x) permissions to ${script}" chmod +x ${script} echo "generate ${script} from errors log ${log}" ${git_command} 2>&1 | grep 'exists' | sed -n "s:.*\: 'refs/tags/\(.*\)' exists;.*:git tag -d '\1':p" >> ${script} echo "execute ${script}" ${script} git pull 

La secuencia de commands anterior intentará registrar errores y solucionarlos generando y ejecutando XXX-exist-tags-delete.sh automáticamente a partir de los siguientes commands:

  1. git update-ref -d refs / tags
  2. git fetch
  3. git pull