nike - Deshace una acción de quitar en Mercurial
mercurial svn (7)
Después de tu comentario a jk, verifiqué hg forget
. Parece ser solo un atajo para hg remove -Af
, lo que significa que este es el verdadero opuesto de hg add
.
Después de eso, si has usado hg remove -Af
, entonces deberías poder revertirlo usando hg add
(lo probé y parece que funciona).
Supongamos que he hecho algunos cambios en el directorio de trabajo y marqué accidentalmente varios archivos (que incluyen algunos de los modificados) para su eliminación. ¿Cómo elimino la marca de los archivos para eliminarlos sin perder los cambios que hice?
Los marcadores se almacenan en el archivo .hg / dirstate. Todo lo que necesita hacer para obtener uno antes de emitir hg remove -Af
. Puede verse así (no probado):
hg clone bad-repo orig-repo
cp orig-repo/.hg/dirstate bad-repo/.hg/dirstate
cd bad-repo
hg status
El último comando debe mostrar el estado antes de eliminar los archivos.
Si el archivo existe, (probablemente si lo has marcado para su eliminación con hg forget
o si lo has modificado, hg remove
), haz hg add [file]
para volver a agregarlo con los cambios realizados después del último commit. y antes de olvidar el archivo.
Si el archivo no existe (probablemente si el archivo no se modificó y ha marcado el archivo para su eliminación utilizando hg remove
), hg revert [file]
para revertirlo a su estado en el padre del directorio de trabajo.
Tuve exactamente el mismo problema. hg add
es el inverso a hg forget
(igual que lo opuesto es cierto). Sin embargo, intentar volver a agregar el directorio no funcionó. En cambio, tuve que usar hg add
en cada archivo:
hg st | egrep "^R" | sed -e "s/R //" | xargs hg add
Espero que ayude. Tenga en cuenta que en mi caso, no había nada que legítimamente quisiera eliminar. Si tiene archivos que definitivamente desea eliminar, ajuste el grep en consecuencia.
hay dos opciones usando hg revert :
hg revertir -a
que volverá a la revisión anterior y colocará todos sus cambios en archivos nuevos con .orig adjunto a los nombres
hg revertir [nombres de archivos para eliminarlos] solo para revertir esos archivos
Probablemente vaya con el último
hg revert
Estoy bastante seguro de que Mercurial incluso hace copias de seguridad de tus cambios por defecto.
Solo hg add
los archivos.
No sé por qué recibes algunas respuestas que modifican el directorio de trabajo. Si ha marcado accidentalmente algunos archivos para eliminarlos, puede deshacerlos con Agregar.
ry4an@four:~/hgtest$ hg status --all
M another_file
C a_file
ry4an@four:~/hgtest$ hg remove --after --force *
ry4an@four:~/hgtest$ hg status --all
R a_file
R another_file
ry4an@four:~/hgtest$ hg add *
ry4an@four:~/hgtest$ hg status --all
M another_file
C a_file
Dicho esto, no use --force
con hg remove
o alguna vez realmente. También trate de adquirir el hábito de usar hg forget
lugar de hg remove --after
,