Я хочу, чтобы Mercurial удалил несколько файлов из текущего состояния хранилища. Однако я хочу, чтобы файлы существовали в предыдущей истории.
Как forget
и remove
отличаются, и они могут делать то , что я хочу?
Я хочу, чтобы Mercurial удалил несколько файлов из текущего состояния хранилища. Однако я хочу, чтобы файлы существовали в предыдущей истории.
Как forget
и remove
отличаются, и они могут делать то , что я хочу?
Ответы:
« hg forget
это просто сокращение для hg remove -Af
». Из hg remove
справки ' ':
... и -Af можно использовать для удаления файлов из следующей ревизии, не удаляя их из рабочего каталога.
Итог: ' remove
' удаляет файл из вашей рабочей копии на диске (если вы не используете -Af
), а ' forget
' нет.
Лучший способ положить, что hg forget
является идентичным с , за hg remove
исключением , что он оставляет файлы позади в вашей рабочей копии. Файлы остаются как неотслеживаемые файлы и теперь могут при желании игнорироваться шаблоном в .hgignore
.
Другими словами, я не могу сказать , использовали ли вы hg forget
или hg remove
когда вытащил от вас. Файл , который вы запускали hg forget
на будет удален при обновлении с этой ревизией - так же , как если бы вы использовали hg remove
вместо этого.
Из документации вы, очевидно, можете использовать любую команду, чтобы сохранить файл в истории проекта. Похоже, вы хотите удалить, так как он также удаляет файл из рабочего каталога.
Из книги Mercurial по адресу http://hgbook.red-bean.com/read/ :
Удаление файла не влияет на его историю. Важно понимать, что удаление файла имеет только два эффекта. Удаляет текущую версию файла из рабочего каталога. Он не позволяет Mercurial отслеживать изменения в файле со времени следующего коммита. Удаление файла никоим образом не изменяет историю файла.
Страница man hg (1) говорит об этом:
Отметьте указанные файлы, чтобы они больше не отслеживались после следующей фиксации. Это удаляет только файлы из текущей ветви, но не из всей истории проекта, и не удаляет их из рабочего каталога.
А это по поводу удаления:
Запланируйте удаление указанных файлов из хранилища. Это удаляет только файлы из текущей ветви, а не из всей истории проекта.
Если вы используете "hg remove b"
файл со статусом «A», что означает, что он был добавлен, но не зафиксирован, Mercurial ответит:
not removing b: file has been marked for add (use forget to undo)
Этот ответ является очень четким объяснением разницы между удалением и забыванием.
Насколько я понимаю, "hg forget"
это для удаления добавленного, но не зафиксированного файла, чтобы он не отслеживался контролем версий; в то время "hg remove"
как для извлечения зафиксированного файла из контроля версий.
В этой теме есть пример для использования hg remove
против файлов 7 различных типов статуса.
Файл может быть отслежен или нет, вы используете hg add для отслеживания файла, а hg remove или hg забудьте, чтобы отследить его. Использование hg remove без флагов приведет к удалению файла и его отслеживанию, hg adm просто отключит отслеживание, не удаляя его.