Quiero que mercurial elimine varios archivos del estado actual del repositorio. Sin embargo, quiero que los archivos existan en el historial anterior.
¿De qué manera forget
y remove
son diferentes, y pueden hacer lo que quiero?
Quiero que mercurial elimine varios archivos del estado actual del repositorio. Sin embargo, quiero que los archivos existan en el historial anterior.
¿De qué manera forget
y remove
son diferentes, y pueden hacer lo que quiero?
Respuestas:
" hg forget
es solo una abreviatura de hg remove -Af
". De la ' hg remove
' ayuda:
... y -Af se pueden usar para eliminar archivos de la próxima revisión sin eliminarlos del directorio de trabajo.
En pocas palabras: ' remove
' elimina el archivo de su copia de trabajo en el disco (a menos que lo use -Af
) y ' forget
' no lo hace.
La mejor manera de poner es que hg forget
es idéntica a hg remove
excepto que deja detrás de los archivos en su copia de trabajo. Los archivos se dejan atrás como archivos sin seguimiento y ahora se pueden ignorar opcionalmente con un patrón en.hgignore
.
En otras palabras, no puedo decir si lo usaste hg forget
o hg remove
cuándo me aparté de ti. Un archivo que se ejecutó hg forget
en se borrará cuando actualice a ese conjunto de cambios - al igual que si se hubiera usado hg remove
en su lugar.
De la documentación, aparentemente puede usar cualquiera de los comandos para mantener el archivo en el historial del proyecto. Parece que desea eliminar, ya que también elimina el archivo del directorio de trabajo.
Del libro de Mercurial en http://hgbook.red-bean.com/read/ :
Eliminar un archivo no afecta su historial. Es importante comprender que eliminar un archivo solo tiene dos efectos. Elimina la versión actual del archivo del directorio de trabajo. Impide que Mercurial rastree los cambios en el archivo, desde el momento de la próxima confirmación. Eliminar un archivo de ninguna manera altera el historial del archivo.
La página de manual hg (1) dice esto sobre olvidar:
Marque los archivos especificados para que ya no se rastreen después de la próxima confirmación. Esto solo elimina archivos de la rama actual, no del historial completo del proyecto, y no los elimina del directorio de trabajo.
Y esto sobre eliminar:
Programe los archivos indicados para su eliminación del repositorio. Esto solo elimina archivos de la rama actual, no del historial completo del proyecto.
Si utiliza "hg remove b"
un archivo con el estado "A", lo que significa que se agregó pero no se confirmó, Mercurial responderá:
not removing b: file has been marked for add (use forget to undo)
Esta respuesta es una explicación muy clara de la diferencia entre eliminar y olvidar.
Tengo entendido que "hg forget"
es para deshacer un archivo agregado pero no confirmado para que el control de versiones no lo rastree; mientras"hg remove"
es para sacar un archivo comprometido del control de versiones.
Este hilo tiene un ejemplo para usar hg remove
contra archivos de 7 tipos diferentes de estado.
Se puede rastrear o no un archivo , se usa hg add para rastrear un archivo y hg remove u hg se olvida de anular el seguimiento. El uso de hg remove sin banderas eliminará el archivo y lo destrabará , hg forget simplemente lo destrabará sin eliminarlo.