¿Cómo reemplazar la rama maestra en Git, por completo, desde otra rama?
Posible duplicado:
Hacer de la rama Git actual una rama maestra
Tengo dos ramas en mi repositorio Git:
maestro
seotweaks
(creada originalmente desdemaster
)
Creé seotweaks
con la intención de fusionarlo rápidamente con master
. Sin embargo, eso fue hace tres meses y el código en esta rama está 13 versiones por delante de master
.
Se ha convertido en nuestra rama maestra de trabajo, ya que todo el código de master
es más o menos obsoleto ahora.
Muy mala práctica, lo sé, lección aprendida.
¿Sabes cómo puedo reemplazar todo el contenido de la rama master
con los de seotweaks
?
Podría borrar todo lo que hay en master
y fusionar, pero esto no me parece una buena práctica.
1540
3
Usted debe ser capaz de utilizar la estrategia de fusión "nuestro" para sobrescribir maestro con seotweaks así:
El resultado debe ser su maestro es ahora esencialmente seotweaks.
(
-s ours
es la abreviatura de--strategy=ours
)De los docs sobre la estrategia
nuestra
:Actualización de los comentarios: Si obtienes el mensaje fatal:
refusing to merge unrelated histories
, entonces cambia la segunda línea por esto: gitmerge --allow-unrelated-histories -s ours master
¿Qué tal si usas git branch -m para renombrar la rama master a otra, y luego renombrar la rama seotweaks a master? Algo así:
Esto podría eliminar los commits del master de origen, por favor comprueba tu master de origen antes de ejecutar
git push -f master de origen
.Puedes renombrar/eliminar la rama maestra en remoto, pero esto será un problema si mucha gente ha basado su trabajo en la rama maestra remota y ha sacado esa rama en su repo local.
Este podría no ser el caso aquí, ya que todo el mundo parece estar trabajando en la rama 'seotweaks'.
En ese caso puedes:
git remote --show puede no funcionar. (Haz un
git remote show
para comprobar cómo está declarado tu remoto dentro de tu repo local. Asumiréorigin
) (Respecto a GitHub, house9 comenta: "Tuve que hacer un paso adicional, hacer clic en el botónAdmin
en GitHub y establecer laRama por defecto
a algo distinto demaster
, y luego volver a ponerlo después")Pero de nuevo:
reajustar --hard
su master local a la rama remota/master que van a obtener, y olvidarse de su master actual.