Яка різниця між hg забути та hg видалити?


313

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

Як forgetі чим removeвідрізнятись, і чи можуть вони робити те, що я хочу?


27
Не хвилюйтеся, ви не можете видалити файл з попередньої історії в Mercurial - історія, як правило, незмінна, якщо ви не почнете використовувати розширення.
Мартін Гейслер

Відповіді:


348

' hg forget' - це просто скорочення для ' hg remove -Af'. З hg removeдовідки ' ':

... і -Af можна використовувати для видалення файлів із наступної версії, не видаляючи їх із робочого каталогу.

Підсумок: " remove" видаляє файл з вашої робочої копії на диску (якщо ви не використовуєте -Af), а " forget" - ні.


7
"hg забудь" знову вводиться в Mercurial 1.3 як більш простий спосіб зробити "hg remove -Af". Він планує видалити файл, не виймаючи його з робочої копії.
Мартін Гейслер

5
Радий це чути. 'delete -Af' (і вся таблиця параметрів на сторінці довідки 'Remove') є / була божевільна.
Bra4 Ry4an Brase

32
@ Ry4an: Серйозно, це було смішно. Я зробив свій патч, який знову ввів «забути». Коли я робив це, я зрозумів, що -Af мав повний сенс у коді, але з точки зору користувача, це було абсолютно смішно.
Стів Лош

10
Гей, ось що таке чудове в руслі - люди активно і ітеративно думають про те, що має сенс з точки зору користувача. Дякуємо, що виправили це.
Ry4an Brase

9
Локальні файли конфігурації чи подібне? Шляхи до локальних інструментів, які відрізняються від системи до системи? Випадково додали файл журналу, який ви не хочете в керуванні джерелами, але хочете зберегти? Я думаю, це трапляється.
Ry4an Brase

42

Найкращим способом є те, що hg forgetє ідентичним, за hg remove винятком того, що він залишає файли позаду у вашій робочій копії. Файли залишаються поза відслідковуваними файлами і тепер необов'язково можуть бути ігноровані з малюнком у .hgignore.

Іншими словами, я не можу сказати, чи використовували ви, hg forgetчи hg removeколи я відтягуюсь від вас. Файл , який ви запускали hg forgetна буде видалений при оновленні з цієї ревізією - так само , як якщо б ви використовували hg removeзамість цього.


27

З документації ви, мабуть, можете використовувати будь-яку команду, щоб зберегти файл в історії проекту. Схоже, ви хочете видалити, оскільки він також видаляє файл із робочого каталогу.

З книги Меркуріалу за адресою http://hgbook.red-bean.com/read/ :

Видалення файлу не впливає на його історію. Важливо розуміти, що видалення файлу має лише два наслідки. Він видаляє поточну версію файлу з робочого каталогу. Це не дозволяє Mercurial відслідковувати зміни до файлу, починаючи з наступного фіксації. Видалення файлу жодним чином не змінює історію файлу.

Сторінка людини hg (1) говорить про це забути:

Позначте вказані файли, щоб вони більше не відстежувалися після наступного виконання. Це видаляє лише файли з поточної гілки, а не з усієї історії проекту, і не видаляє їх з робочого каталогу.

А це щодо видалення:

Заплануйте вказані файли для видалення зі сховища. Це видаляє лише файли з поточної гілки, а не з усієї історії проекту.


3

Якщо ви використовуєте "hg remove b"файл із статусом "А", це означає, що він доданий, але не скоєний, Mercurial відповість:

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

Ця відповідь є дуже чітким поясненням різниці між видаленням та забуттям.

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

Цей потік має приклад використання hg removeпроти файлів 7 різних типів статусу.


2

Файл можна відстежувати чи ні, ви використовуєте hg add для відстеження файлу, а hg видалення або hg забудьте відстежити його. Використання hg remove без прапорів видалить файл і відстежує його, hg забуде його просто відстежувати, не видаляючи його.


3
Я не знаю, чому ви відчули необхідність додати цю цитату, коли сам чоловік уже задзвонив, але ей, що б не плавав ваш човен.
Натан Туггі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.