Soy un usuario Git tratando de usar Mercurial.

He aquí lo que sucedió: hice una hg backout en un conjunto de cambios que quería volver. Creó un nuevo jefe, así hg me instruyó para combinar (de vuelta a la «por defecto», supongo). Después de la combinación, ella me dijo que todavía tenía que comprometerse. Entonces me di cuenta de algo que me hizo mal a la hora de resolver un conflicto en la combinación, y decidí que quería tener todo como antes de la hg backout, que es, quiero que este uncommited de mezcla que se vaya. En Git, este uncommited cosas sería en el índice y me gustaría hacer una git reset --hard HEAD acabarla pero, por lo que he leído, el índice no existe en el Mercurial. Entonces, ¿cómo hago una copia de esto?

4 Comentarios

  1. 88

    Si usted todavía no hemos comprometido, y parece que no se puede deshacer todo el combinar el trabajo con hg update --clean.

    Sin embargo, en las nuevas mercurial cuenta con un práctico mando a volver a fundirse en un solo archivo: hg resolve path/to/file.ext. Desde el hg help resolve:

    The available actions are: ...
    
     4) discard your current attempt(s) at resolving conflicts and
    

    reiniciar
    la combinación desde el principio: «de hg resolver archivo…» (o «- » para todos
    sin resolver archivos)

    • Lo sentimos, todavía estoy un poco confundido: corrí hg up -C, pero el «respaldo» de cometer todavía está en la punta de mi rama. Pensé que esto era un fantasma «rama» que se creó con el backout, pero la ejecución de hg branch devuelve default, así que estoy en la rama principal, después de todo?
    • Usted puede tener dos cabezas con la misma rama, y que es lo que se tiene. Ambos son nombrados default. Esto es muy normal la situación en mercurial y ‘ hg heads es el comando que se utiliza para descubrir y entender. Cuando se corrió hg backout se «Comprometan la seguridad de los cambios como un nuevo conjunto de cambios», por lo que creó un nuevo conjunto de cambios que no desaparece w/o esfuerzo heroico. Así que ahora usted tiene dos cabezas, tanto en la rama llamada predeterminado. Después de hg merge (y cometen) vas a volver a una cabeza en la rama llamada predeterminado.
  2. 21

    Esto es cerca de:

    hg update --clean

    • sí… a veces, a pesar de que al mover archivos de un lado (de un directorio a otro) y, a continuación, decidir a cero todo, no hacer la misma cosa como git reset --hard iba a hacer. Ergo – mercurial es estúpido
  3. 11

    La Hg del Manual GitConcepts página se explica cómo realizar muchas acciones git están familiarizados con los usuarios en Mercurial.

    Mercurial no tiene incorporado en git reset --hard comportamiento. Sin embargo, la strip extensión proporciona un strip comando que hace. Para utilizar, habilitar primero el tira en su ~/.hgrc archivo::

    [extensions]
    strip =
    

    Nota: esta extensión es enviado en las nuevas Mercurial 2.8. Las versiones anteriores siempre que la strip comando en el mq de extensión.

    Ahora puede ejecutar comandos como hg strip o incluso hg help strip. Para eliminar un conjunto de cambios y todos sus hijos, basta con especificar que el conjunto de cambios como un argumento a hg strip. Por ejemplo, para quitar el último commit que usted acaba de hacer (después de haber usado los comandos que causó hg rollback para informar de que ya no hay ninguna transacción rollback), puede quitar el tip revisión. Cada vez que se ejecuta este comando, otra revisión será eliminado. hg strip‘s acciones deben ser consideradas irreversibles; familiarizados los usuarios deben hacer copias de seguridad de sus repositorios antes de usar.

    $ hg strip tip
    

    Por ejemplo, con revsets sintaxis, me indican que quiero quitar cualquier cometa de la mina, que conllevan un incremento de los jefes que se muestra cuando ejecuto hg heads. Si especifica una revisión en particular en la siguiente expresión distinta de tip, todo en la rama actual que no es un antepasado de su elección de revisión será recortado. Esto parece más cercana a la conducta que quiero cuando yo ejecute el comando git reset --hard HEAD.

    $ hg strip "branch(tip) and not(ancestors(tip)::tip)"
    
    • Mercurial 2.8 y encima tiene un strip de extensión en caso de que uno sólo quiere el hg strip comando de forma explícita. El uso de mq añade una variedad de otros la gestión de parches de comandos.
  4. 8

    De git, los comandos:

    git reset --hard     # reset to last commit    
    git clean -df        # delete untracked files
    

    son iguales a

    hg update --clean    # reset to last commit  
    hg purge             # delete untracked files
    
    • Mientras este fragmento de código se puede resolver la cuestión, , incluyendo una explicación de realmente ayuda a mejorar la calidad de tu post. Recuerde que usted está respondiendo a la pregunta para los lectores en el futuro, y esas personas pueden no saber las razones de su sugerencia de código.
    • git reset --hard no eliminar archivos sin seguimiento.
    • No funciona para mí. hg update --clean 18:8e139889ff02 dice «actualizado el 2 de archivos», sin embargo cuando me miro en el registro, es todavía donde estaba. UPD: que dijo, lo hizo restablecer los archivos de la revisión. Que es sólo la mitad de la git reset --hard comportamiento.

Dejar respuesta

Please enter your comment!
Please enter your name here