2010-07-14 20 views
35

De manera accidental, incluí un archivo de configuración (diferente para cada máquina) en nuestros repositorios de mercurial.Mercurial - ¿Cómo eliminar un archivo del control de versión?

¿Cómo puedo obtener Mercurial para que no lo incluya en el control de versiones? No quiero eliminar el archivo porque todavía lo quiero. Y tampoco quiero hacer que el archivo se elimine en los directorios que funcionan de otros desarrolladores.

¿Y cómo puedo hacer esto en TortoiseHG?

Respuesta

39

Haga clic derecho en el archivo -> TortoiseHG -> Olvidar archivos. Haz clic en Olvidar. Compromiso y sincronización.

Edit: También querrá agregar la ruta a su .hgignore para evitar que se agregue nuevamente. Puede hacer clic con el botón derecho sobre el archivo en el cuadro de diálogo HG Commit y elegir ignorarlo.

+0

Necesita agregar los pasos para agregar el archivo de configuración a '.hgignore', por lo que no se reintroduce mas tarde. – sdolan

+1

Intenté esto, pero cuando pulsé en el repositorio central y luego realicé una actualización en esa máquina, se eliminó el archivo. Esto, no quiero ... – Greg

+0

Greg: Ya que está ignorando el archivo ahora, tendrá que copiar el archivo de configuración en la ubicación correcta en cada proceso de repo. – sdolan

2

hg remove o hg remove -f? Creo que hg forget también lo quita de la rama.

En ambos casos, los archivos se conservan en su directorio.

+1

'hg forget' es la abreviatura de 'hg remove -Af' (http://stackoverflow.com/questions/1101167/what-is-the-difference-between-hg-forget-and-hg-remove) – Nate

+0

También ... hg eliminar sin ninguna opción eliminará el archivo del directorio local para que no funcione en este caso – Nate

-2

agrégalo a tu lista de ignorar.

Consulte el archivo .hgignore.

TortoiseHG le da acceso a este archivo de configuración a través de la opción de menú "Editar Ignorar filtro".

27

Aquí está la forma manual de hacerlo a través de la línea de comandos:

  1. copiar el archivo de configuración en algún lugar fuera del repositorio.
  2. Ejecutar hg rm path/to/config/file
  3. Agregue la ruta del archivo de configuración a su .hgignore.
  4. Confirmar el repositorio.
  5. Mueva el archivo de configuración de nuevo a donde lo tenía.
  6. Haz un hg stat en tu repositorio para comprobar que hiciste las cosas bien. (No debería aparecer en la lista de archivos modificados/agregados).

Editar:

hg forget es la mejor manera de hacer esto.

  1. Run hg forget path/to/config/file
  2. Editar su .hgignore y añadir la ruta de acceso al archivo de configuración.
  3. hg ci para guardar sus cambios.
  4. Ejecute hg stat para asegurarse de que todo funcionó según lo previsto.

Consulte la respuesta para saber cómo hacerlo TortoiseHG.

+0

-1? Estos pasos funcionarán muy bien, solo en 2 comandos más que 'forget'. 'hg forget' hace el equivalente de los pasos 1, 2 y 5 en una sola toma. No sabía que existía hasta ahora, así que supongo que gracias por llamar mi atención, ya que es una forma mucho más eficiente de hacerlo. – sdolan

+0

@Nate: preguntó "¿Cómo puedo conseguir que Mercurial no lo incluya en el control de versiones?". Eso es lo que respondí. Incluyó al final "* Y * ¿cómo hago esto en TortoiseHG?". – sdolan

+0

Viéndolo de nuevo, tienes razón. La pregunta sí pregunta cómo hacerlo Y cómo hacerlo en Tortoisehg. Si realiza una edición (cualquier edición), eliminaré mi -1. Lo siento por eso. – Nate

-1

Para aquellos que utilizan SourceTree, hay una opción Stop Tracking cuando se hace clic derecho en un archivo, que básicamente hace lo mismo que hg forget o git rm --cache, eliminando el archivo de cesión temporal, pero no desde el disco duro.

Cuestiones relacionadas