在Mercurial中撤消删除操作

Kos*_*tas 41 mercurial

假设我在工作目录中做了一些更改,并意外地标记了几个文件(包括一些修改过的文件)以便删除.如何在不丢失我所做的更改的情况下取消标记要删除的文件?

Ry4*_*ase 39

只是hg add文件.

我不知道你为什么得到一些修改工作目录的答案.如果您不小心标记了某些要删除的文件,可以使用add撤消它.

ry4an@four:~/hgtest$ hg status --all
M another_file
C a_file
ry4an@four:~/hgtest$ hg remove --after --force *
ry4an@four:~/hgtest$ hg status --all
R a_file
R another_file
ry4an@four:~/hgtest$ hg add *
ry4an@four:~/hgtest$ hg status --all
M another_file
C a_file
Run Code Online (Sandbox Code Playgroud)

这就是说,不要用--forcehg remove或曾经真的.也试着养成使用hg forget代替的习惯hg remove --after,

  • 警告:在未修改的文件上执行`hg remove [file]`会从文件系统中删除该文件.在这种情况下,`hg add [file]`失败并将其添加回来你必须做`hg revert [file]`.`hg add [file]`是删除之前修改过的文件的正确答案. (9认同)

jk.*_*jk. 23

使用hg revert有两个选项:

hg revert -a

这将返回到先前的版本,并将所有更改放在名称附加.orig的新文件中

hg还原[要取消删除的文件名称]以恢复这些文件

我可能会选择后者


pes*_*669 16

hg revert

我很确定默认情况下Mercurial甚至可以备份您的更改.

  • 这不是正确的答案.还原改变目录的工作,这个问题是关于如何撤消"删除标记" (4认同)
  • 是的,但是还原错过了"我没有失去我所做的改变"的一部分.如果您已经编辑了一个文件,并将其标记为删除("hg忘记FILENAME"),则还原将撤消这两个更改.用'hg add`忘记它们是更好更容易的修复. (3认同)

din*_*aur 6

如果该文件存在,(可能是您已将其标记为要删除,hg forget或者如果您已将其修改为hg removed),hg add [file]请将其添加回上次提交后和忘记文件之前所做的任何更改.

如果文件不存在(可能是文件未修改,并且您已使用标记要删除的文件hg remove),hg revert [file]请将其还原回工作目录父级中的状态.