В чем разница между HG forget и HG remove?

Я хочу, чтобы mercurial удалил несколько файлов из текущего состояния репозитория. Тем не менее, я хочу, чтобы файлы существовали в предыдущей истории.

Как forget и remove отличаются, и могут ли они делать то, что я хочу?

5 ответов


'hg forget - Это просто сокращение для 'hg remove -Af'. Из"hg remove ' help:

...и-Af можно использовать для удаления файлов из следующей редакции без удаление их из рабочей справочник.

нижняя строка: 'remove' удаляет файл из рабочей копии на диске (Если вы не используете -Af) и 'forget - нет.


лучший способ поставить это hg forget is одинаковых to hg remove за исключением то, что он оставляет файлы в код рабочей копии. Файлы остаются как неотслеженные файлы и теперь могут быть проигнорированы с шаблоном в .hgignore.

другими словами, Я не могу сказать если вы используете hg forget или hg remove когда я тяну от вас. Файл, который вы запустили hg forget on будет быть удалены, когда я обновляю это набор изменений - так же, как если бы вы использовали hg remove вместо.


из документации вы можете использовать любую команду, чтобы сохранить файл в истории проекта. Похоже, вы хотите удалить, так как он также удаляет файл из рабочего каталога.

из ртутной книги в http://hgbook.red-bean.com/read/:

удаление файла не влияет на его история. Важно поймите, что удаление файла только два эффекта. Он удаляет текущая версия файла этот рабочий каталог. Он останавливает Mercurial от отслеживания изменений в файле, с момента следующей фиксации. Удаление файла никоим образом не изменить историю файла.

человек страница hg(1) говорит Это О забудьте:

отметьте указанные файлы, чтобы они больше не будет отслеживаться после следующего совершать. Это только удаляет файлы из текущая ветвь, а не из вся история проекта, и это делает не удалять их из работа справочник.

и это об удалении:

запланируйте указанные файлы для удаление из репозитория. Этот удаляет только файлы из текущего филиал, а не весь проект история.


если вы используете "hg remove b" против файла со статусом "A", что означает, что он был добавлен, но не введен, Mercurial ответит:

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

этот ответ является очень ясным объяснением разницы между remove и forget.

насколько я понимаю, это "hg forget" для отмены добавленного, но не зафиксированного файла, чтобы он не отслеживался управлением версиями; в то время как "hg remove" предназначен для извлечения зафиксированного файла из системы управления версиями.

этот нить есть пример использования hg remove против файлов 7 различных типов статуса.


файл можно отслеживать или нет, вы используете hg добавить для отслеживания файлов и hg удалить или hg забывают отменить отслеживание. Используя hg удалить без флаги удалят файл и отследят его,hg забыть будет просто отследите его, не удаляя.