¿Cómo cambio el nombre de mi rama 'maestra' de Git a 'lanzamiento'?

115

Nos gustaría hacer cumplir una nueva política para nuestros proyectos de que la rama maestra ahora se llame rama de lanzamiento para asegurarnos de que sea más claro cómo se debe usar la rama. Naturalmente, también desarrollaremos y lanzaremos ramas candidatas.

Entiendo que puedo cambiar el nombre de la rama maestra localmente simplemente usando lo siguiente:

git branch -m master release

Sin embargo, eso es solo a nivel local. Incluso si presiono esto hacia el control remoto, el HEAD aún apunta a la rama maestra remota. Quiero deshacerme de la rama maestra por completo y hacer que la rama local predeterminada en la clonación inicial se libere.

¿Cómo puedo conseguir esto?

Parece que, dado que el origen está en un servidor Gitorious , obtengo errores al eliminar la rama maestra. Estoy tratando de ver ahora si es posible cambiar esto para que la rama predeterminada sea 'lanzamiento'.

Kyle Hayes
fuente
2
Je, bastante justo. El valor a largo plazo es lo suficientemente alto como para al menos intentarlo.
Kyle Hayes
Posible duplicado de ¿Cómo cambio el nombre de una rama de Git local?
Vineet Jain
Algunos servidores (remotos) se niegan a eliminar la rama "predeterminada" (es el caso de Github). Así que quizás necesites ir al servidor para elegir otra rama "predeterminada" para el momento de las operaciones ... En Github, esto se puede hacer en la vista "rama".
jehon
1
git branchahora admite una --movebandera git-scm.com/docs/git-branch#Documentation/git-branch.txt---move
alxndr

Respuestas:

139
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

Tenga en cuenta que si está utilizando GitHub , primero deberá cambiar su rama "predeterminada" en GitHub después del paso 3:

En su repositorio en github.com, vaya a ConfiguraciónRamasRama predeterminada . Cámbielo para liberar y luego realice el resto de los pasos.

Adam Dymitruk
fuente
3
Cuando intento git push --delete, aparece el siguiente error: se prohíbe la eliminación de la rama actual
Kyle Hayes
8
Está usando github o algo similar, necesita hacer que la rama predeterminada sea algo más: matthew-brett.github.com/pydagogue/gh_delete_master.html o simplemente deje el maestro allí e ignórelo .
Adam Dymitruk
Sí, tenemos un caso terrible. Déjame ver si esa es una opción.
Kyle Hayes
Parece que los ganchos de confirmación de gitorious prohíben la eliminación de la rama maestra, sin una buena razón que pueda ver: /
fge
1
Lo mismo ! [remote rejected] branch (deletion of the current branch prohibited) sucederá con Bitbucket. Cambie el "Repositorio principal" en la pantalla de configuración (debajo del ícono de ajustes).
dnfehren
13

Echa un vistazo a tu rama maestra

git checkout master

Crea tu rama de lanzamiento y cámbiala:

git branch release
git checkout release

Empuje eso al servidor

git push origin release

Eliminar la referencia de la rama maestra en el servidor

git push origin :master

Eliminar la rama maestra local

git branch -d master
Jeff Ferland
fuente
2
Puedo decir con estos pasos que me encontraré con el mismo error que mencioné anteriormente.
Kyle Hayes
@KyleHayes Ese es un problema de configuración del servidor. Aunque es así de forma predeterminada, el proceso para alterar eso debería ser evidente para el usuario o fácilmente detectable en Stackoverflow
Jeff Ferland
Tienes que cambiar a otra rama antes de poder eliminar una rama.
Martinedwards
5

Nota: Esta respuesta está destinada a servidores Git autohospedados donde tiene acceso a la línea de comandos.

Dado que intentar eliminar el remote masterde un cliente de hecho no está permitido y supongo que prohibir denyDeleteCurrenttiene sentido, no me gustaría cambiar esa configuración.

Sin embargo, descubrí que la forma más fácil de cambiar el nombre de su maestro si tiene acceso de línea de comando al servidor remoto es ejecutar el comando de cambio de nombre directamente en el control remoto.

Esto funcionó para mí:

  1. Inicie sesión a través de SSH en el servidor git remoto
  2. Vaya a la carpeta xxx.git de su proyecto
  3. correr: git branch -m master release

Ahora, el repositorio remoto se usa releasecomo su rama predeterminada y cualquiera git cloneen ese repositorio de cualquier cliente verificará la rama de lanzamiento de forma predeterminada.

Es muy útil también después de configurar un repositorio simple para configurarlo según sus necesidades.

Christopher Lörken
fuente
3

Como dijeron otros anteriormente, el problema aquí es Gitorious, que no le permite eliminar la rama HEAD por defecto. Tienes dos opciones para solucionar este problema. Una es iniciar sesión en el servidor Gitorious (con ssh), encontrar el repositorio de Git en el servidor de archivos y agregar:

[receive]
        denyDeleteCurrent = warn

a la configuración.

Una opción más sencilla es simplemente cambiar la rama predeterminada. Vaya a su repositorio en la interfaz web de Gitorious, presione "Editar repositorio" y establezca "Cabeza Cambie la referencia simbólica HEAD en los puntos del repositorio de Git a:". Una vez hecho esto, puede eliminar la rama maestra.

Aleksander Blomskøld
fuente
2

Si se encuentra con este problema con GitHub , siga los pasos hasta eliminar la rama en remoto. No te dejará hacer eso. Luego inicie sesión en la interfaz web y en el repositorio vaya a ConfiguraciónRamasRama predeterminada . Cámbielo a la nueva rama y realice el resto de los pasos.

Gru
fuente
1

Idealmente, desea configurar el seguimiento, así que haga esto:

git push origin HEAD:release
git checkout --track origin/release

Ahora, ¿quieres eliminar los demás?

git branch -d master
git push origin :master

¡Sencillo!

Gahooa
fuente
Recibí el mismo error que el que publiqué en el comentario de @ Adam cuando llegué al comando git push origin: master.
Kyle Hayes
0

Ya que ha terminado con el cambio de nombre de las ramas, para configurar HEAD releasepara control remoto

git remote set-head origin release

Luego, para eliminar la masterrama en remoto, tendría que ser el administrador, al menos en GitHub. Consulte esta publicación para obtener más información.

zyy
fuente