¿Cómo elimino origin / master en Git?

10

No puedo eliminar origin/masterde mi servidor. No tengo idea de por qué.

Captura de pantalla de mi terminal

El mensaje de error es el siguiente

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error: 
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error: 
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To [email protected]:/export/home/a/elabshare/git/ID-check.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to '[email protected]:/export/home/a/elabshare/git/ID-check.git'

No, estoy no usando Github .

Atcold
fuente
1
¿Por qué querrías hacer eso? ¿Hay otras ramas?
Daniel B
De hecho, hay otras ramas (revise el enlace a la imagen, en realidad, ¿podría mostrarlo por mí?). Tuvimos que rebasear master, y lo hicimos en una rama temporal que ahora debería convertirse master. El único problema es que no sé por qué no puedo matar al maestro en el servidor.
Atcold
2
Tal vez no sea la respuesta que está buscando, pero podría forzar a los rebasados mastera que origin/masterreemplacen efectivamente el antiguo con el nuevo.
SlightlyCuban
Además del mensaje de error, publique el comando que está utilizando.
Kyralessa
@ Kyralessa, mira la captura de pantalla.
Atcold

Respuestas:

7

Dato curioso: incluso los repositorios remotos están en una rama. Estás siendo rechazado porque estás tratando de eliminar la rama que tu origen ha "desprotegido" actualmente.

Si tiene acceso directo al repositorio, puede abrir un directorio de informes de shell y usar el viejo git branchpara ver en qué origen de rama se encuentra actualmente. Para cambiarlo a otra rama, debe usar git symbolic-ref HEAD refs/heads/another-branch.

Si está utilizando un servicio como Github o Gitorious, tendrá que usar la interfaz de usuario que la herramienta le proporciona para realizar el cambio (consulte esta respuesta para saber cómo hacerlo en las herramientas comunes).

Ligeramente Cubano
fuente
Impresionante, funcionó y me dio la oportunidad de aprender más acerca refsde Git ! ¡Muchas gracias! (Sí, sabía cómo tratarlo en Github , pero no en nuestro servidor personal)
Atcold
12

En lugar de eliminar el maestro del servidor, puede reemplazarlo así:

git push origin otherbranch:master -f

Eso reemplazará master con el contenido de otherbranch, pero aún se llamará master en el control remoto. Y luego puedes ver master como master en tu local.

Kyralessa
fuente
¡OK gracias! Sé que puedo forzar cosas, pero me preguntaba exactamente por qué no podía eliminar la masterrama, y ​​la respuesta aceptada explica por qué.
Atcold
1
+1. Esta fue la única forma en que pude eliminar una mala primera confirmación en controles remotos / origen / maestro.
ctn