Utilizo Mercurial e inmediatamente envío cada compromiso a BitBucket.

Recientemente me comprometí con mi repositorio local y lo envié a BitBucket a través de hg push. Más tarde, me di cuenta de que no debería haber hecho ese compromiso, así que intenté:

$ hg rollback
repository tip rolled back to revision 37 (undo push-response)

Pero el archivo en Xcode no cambió. Cerré la ventana de Xcode y la volví a abrir, pero sin cambios. Intenté revertir la reversión en Bitbucket, pero tampoco funcionó:

$ hg push ssh://hg@bitbucket.org/myuser/myproject
pushing to ssh://hg@bitbucket.org/myuser/myproject
searching for changes
no changes found

¿Cómo puedo deshacerme, tanto localmente como en BitBucket? Quiero que el código vuelva al estado en el que estaba antes de la confirmación incorrecta.

0
Kartick Vaddadi 2 ene. 2017 a las 19:51

1 respuesta

La mejor respuesta

No puede revertir en Bitbucket, debe eliminar el cambio del repositorio.
En Bitbucket, vaya al repositorio Configuración y luego Elimine confirmaciones . Ingrese el ID de hash de la confirmación y haga clic en Vista previa de la tira , luego, si está contento de que eliminará la confirmación correcta, puede confirmarlo.

Ahora puede eliminar o editar la confirmación en su copia local.
hg rollback no se recomienda en estos días, si puede corregir el compromiso, puede usar hg commit --amend para actualizarlo antes de presionar nuevamente.

Rollback eliminará la confirmación y dejará los archivos modificados en un estado no confirmado en su directorio de trabajo. A partir del mensaje que recibió, parece que su reversión se realizó correctamente, y no esperaría que el archivo cambie en XCopy porque deja el cambio en su directorio de trabajo, pero si observa cuál es la sugerencia del repositorio ahora, su confirmación debería desaparecerá y si observa el estado de su directorio de trabajo, debería haber cambios no confirmados correspondientes a su cambio no deseado.
Debería poder hg revert cualquier cambio no confirmado que no desee.

Si la confirmación sigue ahí, y desea deshacerse de ella por completo y no desea conservar el código en absoluto, puede usar hg strip para eliminarlo (es posible que deba activar la extensión de la tira en el mercurial settigs primero).

Mercurial: encontrar y corregir errores

Extensión de tira

1
Nanhydrin 3 ene. 2017 a las 02:13
1) No quiero hacer cambios directamente en la interfaz de usuario web de BitBucket. En cambio, quiero hacer el cambio localmente, verificar que se compile y se ejecute, y solo luego enviarlo a BitBucket. 2) Escribiste que "Rollback eliminará la confirmación", pero cuando ejecuto hg history, la confirmación sigue ahí. 3) No entiendo por qué el archivo no cambiará en Xcode si se cambia en el disco. 4) Gracias por decirme que evite la reversión. Intentaré usar tira.
 – 
Kartick Vaddadi
3 ene. 2017 a las 09:01
1) No puede presionar la eliminación de una confirmación. Todo lo que puede hacer es usar hg backout para crear otra confirmación que revierte los cambios y se confirma además del cambio defectuoso. Pero ahora tienes dos confirmaciones. 2) La reversión debería eliminar la confirmación, es posible que deba cambiar la fase de la confirmación a borrador (hg phase --draft --rev your_revision_number --force) e intentar la reversión nuevamente. 3) Si la reversión tiene éxito, el archivo no cambiará en el disco, porque aunque la reversión elimina la confirmación del historial, simplemente descarga los cambios en el directorio de trabajo.
 – 
Nanhydrin
4 ene. 2017 a las 02:44