Quelle est la différence entre HG forget et Hg remove?

je veux que mercurial supprime plusieurs fichiers de l'état actuel du dépôt. Cependant, je veux que les fichiers existent en avant l'histoire.

comment forget et remove diffèrent-ils, et peuvent-ils faire ce que je veux?

304
demandé sur Martin Geisler 2009-07-09 03:51:30

5 réponses

" hg forget "n'est qu'une abréviation de hg remove -Af ". De la ' hg remove 'aide:

...et -Af peut être utilisé pour supprimer des fichiers de la prochaine révision sans leur suppression du travail répertoire.

résultat net: ' remove 'supprime le fichier de votre copie de travail sur disque (sauf si vous utilisez -Af ) et ' forget ' ne le fait pas.

336
répondu Ry4an Brase 2009-07-11 03:37:23

la meilleure façon de mettre est que hg forget est identique à hg remove sauf qu'il laisse les fichiers derrière dans votre copie de travail. Les fichiers sont laissés derrière comme des fichiers non tracés et peuvent maintenant être ignorés avec un motif dans .hgignore .

en d'autres termes, je ne peut pas dire si vous avez utilisé hg forget ou hg remove quand je tire de vous. Fichier que vous ayez couru hg forget sur sera être supprimé lors de la mise à jour à ce changeset - tout comme si vous aviez utilisé hg remove à la place.

40
répondu Martin Geisler 2012-03-29 17:16:05

de la documentation, vous pouvez apparemment utiliser l'une ou l'autre commande pour garder le fichier dans l'histoire du projet. On dirait que vous voulez supprimer, puisqu'il supprime également le fichier du répertoire de travail.

du Livre de Mercurial à http://hgbook.red-bean.com/read / :

supprimer un fichier n'affecte pas son histoire. Il est important de comprendre que la suppression d'un fichier seulement deux effets. Il supprime le version actuelle du fichier à partir de la répertoire de travail. Ça arrête le mercuriel. du suivi des modifications au fichier, à partir du moment de la prochaine validation. Supprimer un fichier n'est en aucune façon modifier l'historique du fichier.

La page de man de hg(1) dit ceci à propos de l'oublier:

marquer les fichiers spécifiés afin qu'ils ne plus être suivi après le prochain engager. Cela ne supprime que les fichiers la branche courante, pas à partir de la toute l'histoire du projet, et il le fait ne pas supprimer de travail répertoire.

et ce à propos de supprimer:

programmer les fichiers indiqués pour retrait à partir du référentiel. Ce supprime seulement les fichiers du courant branche, pas de l'ensemble du projet histoire.

26
répondu Jason Catena 2009-07-09 02:00:33

si vous utilisez "hg remove b" contre un fichier avec le statut "A", ce qui signifie qu'il a été ajouté mais pas Commité, Mercurial répondra:

  not removing b: file has been marked for add (use forget to undo)

cette réponse est une explication très claire de la différence entre enlever et oublier.

ma compréhension est que "hg forget" est pour défaire un fichier ajouté mais non engagé de sorte qu'il ne soit pas suivi par le contrôle de version; tandis que "hg remove" est pour prendre un fichier engagé de le contrôle de version.

ce thread a un exemple pour utiliser hg remove contre des fichiers de 7 types différents de statut.

3
répondu gm2008 2017-05-23 12:17:36

un fichier peut être suivi ou non, vous utilisez hg ajouter pour suivre un fichier et hg supprimer ou hg oublier de l'onu-piste. En utilisant hg supprimer sans les options supprimeront le fichier et le dé-traceront, HG forget il suffit de le désassembler sans le supprimer.

1
répondu Tao 2015-05-07 02:31:31