Я хочу ртутним вилучити кілька файлів із поточного стану сховища. Однак я хочу, щоб файли існували в попередній історії.
Як forget
і чим remove
відрізнятись, і чи можуть вони робити те, що я хочу?
Я хочу ртутним вилучити кілька файлів із поточного стану сховища. Однак я хочу, щоб файли існували в попередній історії.
Як 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
замість цього.
З документації ви, мабуть, можете використовувати будь-яку команду, щоб зберегти файл в історії проекту. Схоже, ви хочете видалити, оскільки він також видаляє файл із робочого каталогу.
З книги Меркуріалу за адресою http://hgbook.red-bean.com/read/ :
Видалення файлу не впливає на його історію. Важливо розуміти, що видалення файлу має лише два наслідки. Він видаляє поточну версію файлу з робочого каталогу. Це не дозволяє Mercurial відслідковувати зміни до файлу, починаючи з наступного фіксації. Видалення файлу жодним чином не змінює історію файлу.
Сторінка людини hg (1) говорить про це забути:
Позначте вказані файли, щоб вони більше не відстежувалися після наступного виконання. Це видаляє лише файли з поточної гілки, а не з усієї історії проекту, і не видаляє їх з робочого каталогу.
А це щодо видалення:
Заплануйте вказані файли для видалення зі сховища. Це видаляє лише файли з поточної гілки, а не з усієї історії проекту.
Якщо ви використовуєте "hg remove b"
файл із статусом "А", це означає, що він доданий, але не скоєний, Mercurial відповість:
not removing b: file has been marked for add (use forget to undo)
Ця відповідь є дуже чітким поясненням різниці між видаленням та забуттям.
Я розумію, що "hg forget"
це для скасування доданого, але не вчиненого файлу, щоб його не відстежував контроль версій; у той час "hg remove"
як для вилучення вчиненого файлу з контролю версій.
Цей потік має приклад використання hg remove
проти файлів 7 різних типів статусу.
Файл можна відстежувати чи ні, ви використовуєте hg add для відстеження файлу, а hg видалення або hg забудьте відстежити його. Використання hg remove без прапорів видалить файл і відстежує його, hg забуде його просто відстежувати, не видаляючи його.