Как сделать Mercurial 'hg remove' для всех отсутствующих файлов?

224

Я использую это, чтобы удалить файл из репо:

hg remove <full file path> 

Какую команду вы можете использовать , чтобы выполнить команду hg removeна всех файлов , которые были удалены на местном уровне?

Под удаленным локально я подразумеваю тех, которые появляются с тем, !когда вы делаете hg status.

Для добавления вы можете просто hg addдобавить все новые файлы (с префиксом ?).

Маркус Леон
источник

Ответы:

364

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

hg addremove

Любой из них удалит все локально отсутствующие файлы (это одна и та же команда)

hg remove --after
hg remove -A
mfperzel
источник
7
есть также hg забудьте, что эквивалентно hg rm -Af
jk.
37
JK для имени пользователя является угрожающим, я чувствую себя как всегда, когда я читаю один из ваших комментариев или постов, которые вы говорите «просто шучу» в конце :(, как говорится, это помогло, ура!
Lester Peabody
6
одно слово предупреждения ... не волнуйтесь, когда он высыпает на экран целую кучу дерьма ... (как я это сделал)
Ричард Б.
1
Вот Это Да! Спасибо! Это очень помогло! Вот Это Да! +1 :) hg rm -A
Cullub
32

Если вы намереваетесь выполнить addremove и commit, его можно объединить с опцией -A, как показано здесь :

hg commit -A -m 'Commit with addremove'
tsenapathy
источник
5

Оригинальный вопрос спрашивал, как удалить (то есть забыть) файлы, которые отображаются как "!"при использовании hg st. Прямой подход, который имеет преимущество прозрачности, заключается в использовании hg stс -nопцией:

hg -v forget $(hg st -nd)

(Конечно, файлы будут забыты только при следующем коммите .)

Флаги хорошо документированы в другом месте (например, самой командой hg), но вкратце:

  • -n означает «только имя файла»
  • -d означает «выбрать файлы, которые были удалены»
вершина горы
источник
Можете ли вы объяснить каждый из этих флагов?
Cullub
1

Если вы хотите добавить и зафиксировать изменения, но не готовы зафиксировать остальные изменения, я думаю, вам все равно придется перечислить их:

$ 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
Дэн Росс
источник