Как сделать Mercurial 'hg remove' для всех отсутствующих файлов?
Я использую это, чтобы удалить файл из репо:
hg remove <full file path>
Какую команду вы можете использовать для hg remove
для всех файлов, которые были удалены локально?
Удаленные локально, я имею в виду те, которые появляются с !
, когда вы делаете hg status
.
Для добавлений вы можете просто сделать hg add
, чтобы добавить все новые файлы (с префиксом ?
).
Ответы
Ответ 1
Это добавит все новые файлы, которые не будут проигнорированы, и удалите все локально отсутствующие файлы
hg addremove
Любой из них удалит все локально отсутствующие файлы (они являются одной и той же командой)
hg remove --after
hg remove -A
Ответ 2
Если вы намерены делать addremove и commit, его можно объединить с опцией -A, как показано здесь:
hg commit -A -m 'Commit with addremove'
Ответ 3
Исходный вопрос задал вопрос о том, как удалить (например, забыть) файлы, отображаемые как "!"
при использовании hg st
. Прямой подход, который имеет преимущество прозрачности, заключается в использовании hg st
с опцией -n
:
hg -v forget $(hg st -nd)
(Конечно, файлы будут забыты только при следующей фиксации.)
Флаги хорошо документированы в другом месте (например, самой командой hg), но вкратце:
-
-n
означает только имя файла
-
-d
означает "выбрать файлы, которые были удалены"
Ответ 4
Если вы хотите addremove и commit, но не готовы выполнить остальные изменения, я думаю, вам все равно придется перечислять их:
$ hg st
M modified-file
A added-file
R removed-file-1
R removed-file-2
$ hg commit -m"remove removed-file-1 and removed-file-2" removed-file-*
abort: removed-file-*: No such file or directory
$ hg commit -m"remove removed-file-1 and removed-file-2" removed-file-1 removed-file-2
committed changeset 185:628800a7af84