¿No es posible crear alguna subcarpeta en un repositorio en un servidor?
si lo hago:
git push origin dev/master
todo el trabajo encuentra
pero si lo hago
git push origin dev/sub/master
tengo esto:
error: 'refs/heads/dev/sub' exists; cannot create 'refs/heads/dev/sub/master'
Verifiqué con "git branch -r" y directamente con ssh, no hay una carpeta dev / sub ya creada.
que esta mal

Respuestas:
No es una carpeta que existe, es una rama . (Bueno, puede haber una carpeta / directorio involucrado en alguna parte, o tal vez no, ya que las referencias se "empaquetan" y dejan de existir como archivos dentro de los directorios).
bexiste una rama, nob/anythingse puede crear ninguna rama con nombre .dev/bexiste una rama ,dev/b/cno se puede crear.Esta es una limitación interna de git. En este caso particular, el control remoto
origintiene una rama nombradadev/sub(independientemente de si la tienes o no, lo importante es si el control remoto la tiene). Para crear, enorigin, una rama nombradadev/sub/master, primero debe eliminar la rama nombradadev/subenorigin:(Por supuesto, eliminar esta rama puede eliminar algo importante allí, así que asegúrese de saber lo que está haciendo. En general, es posible que desee
git fetch originprimero, capturar sudev/subcomo suorigin/dev/sub. Luego puede hacer una rama local llamada quedev/renamed-subapunte a la misma confirmación , creedev/renamed-suben el control remoto, elimine el control remotodev/suby luego creedev/sub/masteren el control remoto).Si puede iniciar sesión en el control remoto (el sistema que
originestá alojado), puede ir al repositorio de allí y simplemente cambiar el nombre de ladev/subsucursal local . (Según los comentarios a continuación, sospecho que allí también hay un script de implementación automática roto, que probablemente debería arreglarse para implementar solo ramas "implementables", en lugar de todo lo que se empuja. Pero solo estoy adivinando).fuente
release/1.1yrelease/1.2conrelease/1.1/hofix/prevent-upload-bork&release/1.1/hotfix/assure-user-of-competence, etc. Y el mensaje de error lo lleva a uno aquí (gracias), en lugar de indicar la limitación. Pero gracias por una explicación simple y clara.refs/tags/fooyrefs/tags/foo/2, por ejemplo, no podría hacer esto: necesitaría implementar su propio almacén de clave-valor. Creo que Git se verá obligado a implementar su propio almacén de valores clave de todos modos, pero no sé si eliminarán la limitación en ese momento.git checkout -- mastersignifica verificar el archivo nombradomaster, en lugar del nombre de la rama).Estaba en un estado en el que ni siquiera podía buscar porque mi repositorio tenía información sobre ramas remotas no existentes que ni siquiera había revisado. Lo resolví ejecutando la combinación (gracias @torek) de:
git branch -renumerar copias locales de sucursales remotasgit ls-remoteenumerar ramas remotasgit fetch --prune originactualizar copias locales de sucursales remotas ( esto en realidad no me ayudó )git remote prune origineliminar información sobre ramas remotas eliminadas ( esto lo hizo )fuente
git remote prune originfue el único comando que ejecuté para resolver este estado de error. De hecho, mensaje engañoso: en mi caso, estaba tratando de presionar un "release / 2.6.0" y había eliminado todo el directorio 'refs / remotes / origin / release *', pero git seguía quejándoseerror: update_ref failed for ref 'refs/remotes/origin/release/2.6.0': cannot lock ref 'refs/remotes/origin/release/2.6.0': 'refs/remotes/origin/release' exists; cannot create 'refs/remotes/origin/release/2.6.0'cada vez que intentaba push / pull / fetchPara mi ->
Error =
Solución =
fuente
La respuesta actualmente aceptada no me ayudó porque no tenía una referencia en el repositorio remoto para eliminar, ¡estaba puramente en mi local! Entonces, si se encuentra en esa situación, esto es lo que debe hacer:
Este es el problema al que me enfrentaba:
Probé la sugerencia de la respuesta aceptada pero obtuve esto:
Así que el árbitro ni siquiera existía en
origin- claramente estaba merodeando en algún lugar de mi repositorio local. Entonces corrí$ git remote show me, lo que produjo:Lo que luego dejó clara la solución:
Con esto, el problema desapareció:
fuente
git remote prune originsolucionó. ¡Gracias!Prueba este comando para solucionarlo:
para ejecutar una serie de tareas de limpieza dentro del repositorio actual y eliminar objetos inalcanzables (invocando
git pruneygit fsck --unreachable).Leer más:
git help gcygit help prunefuente
Si todo lo demás falla, verifique que su sistema de repositorios no tenga limitaciones para los nombres de las sucursales. En mi caso, solo podrías crear ramas que comiencen con
SD-<number>. Cualquier otro nombre le daría solo un genérico:fuente
El script anterior registrará los errores en XXX-errors.log y los solucionará generando y ejecutando un XXX-exist-tags-delete.sh automáticamente desde el XXX-errors.log utilizando los siguientes comandos:
fuente
git remote prune originsolucionó el problema para mífuente
Como usuario de Windows, ninguna de las soluciones hasta ahora me resolvió el problema. La razón por la que estaba viendo este error era porque (usando los nombres de las ramas del OP) estaba tratando de crear una rama
dev/subpero alguien más había creado una rama llamadaDevy, como todos sabemos, Windows tiene un sistema de archivos que no distingue entre mayúsculas y minúsculas.Entonces, cuando Windows intentó desplegarse
dev/sub, primero estaba tratando de crear la carpetadev, pero no pudo porqueDevya existía.La solución fue eliminar la
Devsucursal de forma local y remota congit branch -d Dev && git push origin :Dev. Agit pulldespués de esto funcionó bien.Otra lección en el futuro, los nombres de las sucursales siempre deben estar en minúsculas para evitar este tipo de errores.
fuente
Entiendo que esto ya está respondido, pero no funcionó para mí. No me importaron los cambios locales, ya que ya estaba subido, pero tenía problemas para retroceder. En mi caso, cambiamos a medio camino entre tener "revisión" como rama al sistema de carpetas y tener la carpeta principal como "revisión".
- revisión ---- revisión / 1234_bug ---- revisión / 3456_bug
Entonces recibí el siguiente error:
Después de buscar errores similares, finalmente encontré una solución en un hilo de discusión aquí .
fuente
fuente
Cambie el nombre
dev/subadev/sub/something, luego puede crear una ramadev/sub/master.fuente