Como fazer o 'hg remove' do Mercurial para todos os arquivos ausentes?

224

Eu uso isso para remover um arquivo do repositório:

hg remove <full file path> 

Que comando você pode usar para executar um hg removeem todos os arquivos que foram excluídos localmente?

Por excluídos localmente, quero dizer aqueles que aparecem !quando você o faz hg status.

Para adições, basta hg addadicionar todos os novos arquivos (os prefixados ?).

Marcus Leon
fonte

Respostas:

364

Isso adicionará todos os novos arquivos que não são ignorados e remove todos os arquivos ausentes localmente

hg addremove

Qualquer um deles removerá todos os arquivos ausentes localmente (são o mesmo comando)

hg remove --after
hg remove -A
mfperzel
fonte
7
também há hg forget, que é equivalente a hg rm -Af
jk.
37
o jk um nome de usuário é ameaçador, eu sinto como evertime eu li um dos seus comentários ou mensagens que você está dizendo "apenas brincando" no final :( que foi dito, isso ajudou, aplausos!
Lester Peabody
6
Uma palavra de aviso ... não freak out quando se despeja um monte de porcaria para a tela ... (como eu fiz)
Richard B
1
Uau! Obrigado! Isso ajudou muito! Uau! 1 :) hg rm -A
Cullub 18/01/16
32

Se você pretende fazer addremove e commit, ele pode ser associado à opção '-A', como mostrado aqui :

hg commit -A -m 'Commit with addremove'
tsenapatia
fonte
5

A pergunta original perguntou como remover (por exemplo, esquecer) os arquivos que aparecem como "!"quando se usa hg st. Uma abordagem direta que tem a vantagem da transparência é usar hg stcom a -nopção:

hg -v forget $(hg st -nd)

(É claro que os arquivos serão esquecidos no próximo commit .)

Os sinalizadores estão bem documentados em outros lugares (por exemplo, pelo próprio comando hg), mas em resumo:

  • -n significa "apenas nome do arquivo"
  • -d significa "selecionar arquivos que foram excluídos"
pico
fonte
Você pode explicar cada uma dessas bandeiras?
Cullub
1

Se você deseja adicionar e remover e confirmar, mas não está pronto para confirmar o restante de suas alterações, acho que você ainda precisa enumerá-las:

$ 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
Dan Ross
fonte