2010-03-02 11 views
48

¡Estoy intentando asimilar a Mercurial y espero estar confundido aquí!¿Por qué no puedo enviar este cambio a mi repositorio mercurial "principal"?

Tengo un repositorio ('principal') que he clonado ('clon'), ambos en mi propia máquina. Ambos estaban completamente sincronizados el uno con el otro.

Decidí jugar con las ramas con nombre así que la próxima vez que me comprometí en mi 'clon' lo hice bajo el nombre de 'case1212' y aunque parece que se ha ocupado correctamente de mi clon, no puedo empujar estos cambios a 'principal'. El error dado es:

abort: push creates new remote branch 'case1212'! 

... ¿y sugiere que podría necesitar fusionar primero? ¿Qué se supone que debo unir en ese repositorio 'clon'? Cuando trato de sacar de 'main', no hay cambios.

Estoy bastante seguro de que realmente me gustaría crear una rama remota en mi repositorio "principal" para que las personas que actualicen puedan ver esa rama.

Respuesta

50

El comportamiento predeterminado de Mercurial le impide crear ramas remotas. Si quieres hacer esto, necesitas presionar a la fuerza.

Sincronizar menú en la ventana que se muestra, hay una opción para forzar push.

+0

¿no es la mejor práctica fusionar los cambios remotos localmente y luego presionar? – gcb

+4

@gcb Algunas veces realmente quieres una nueva rama en el repositorio del servidor para que esté disponible para que otros la vean y la usen. Pero si solo se trata de una cabecera separada porque no se han fusionado los cambios locales de forma local, entonces sí, debe fusionarse antes de pulsar y luego no es necesario presionar forzar. – Rory

19

Le advierte que su inserción crearía nuevas cabezas remotas (y en este caso ramas). Si estás de acuerdo con eso, y parece que lo eres, puedes presionar con push -f.

Este cheque está allí para que si desea que la rama case1212 no regrese al servidor principal, puede hacer hg push -r default y luego no verá esta advertencia y no enviará case1212.

Una vez que haya hecho esto para case1212 no volverá a aparecer la advertencia ya que case1212 ya estará allí.

Las versiones más recientes de mercurial hacen que la advertencia suene un poco menos aterrador en el caso en que la nueva cabeza sea una nueva rama.

25

Tortoise ahora tiene una opción Push new branch que puede ser más segura que Force pull or push. La herramienta de línea de comando tiene una bandera --new-branch.

Actualización: La nueva interfaz de tortuga lo hace un poco más difícil de encontrar. Cambia a la vista Sincronizar, luego haz clic en las opciones y selecciona permitir empujar una nueva rama.

+9

¡Lo hace y hago un buen uso de él! Detesto tener fuerza forzada a la izquierda de forma permanente, solo se siente como ejecutar Linux como root todo el tiempo. –

Cuestiones relacionadas