从Mercurial中的提交中删除文件

Dra*_*ter 42 mercurial

我有一个提交,我修改了一些文件.其中一些文件是我在此提交中不想要的修订的一部分.Mercurial中是否有一种方法可以从提交中删除某些文件而不会丢失我对它们所做的更改?谢谢.

脚步:

  1. 做了一些改变
  2. hg commit -m
  3. 做了一些更改(其中一些文件意外修改)
  4. hg修改

Mic*_*ina 74

试用:

hg forget somefile.txt
hg commit --amend
Run Code Online (Sandbox Code Playgroud)

如果文件是新的(即你使用了hg add).

如果该文件已存在,请尝试:

cp somefile.txt somefile.txt.bak
hg revert somefile.txt --rev .~1
hg commit --amend
Run Code Online (Sandbox Code Playgroud)

这基本上是告诉mercurial revert文件(somefile.txt)返回状态它是一个修订版前(--rev .~1).

只需确保在输入命令之前备份要还原的文件,这样就不会丢失更改.我的印象是mercurial会自动为你做这件事,但经过快速测试后我不太确定.

  • 奇迹般有效.如果文件已经提交,`-X somefile.txt`参数没有帮助,但是将更改恢复到以前的版本就可以了. (2认同)

Jus*_* L. 5

hg uncommit somefile.txt正是为我做的。

与 plain 一样git reset,它从提交中删除更改,但保持文件内容不变,因此现在hg diff显示您刚刚未提交的更改。

uncommit命令声称来自uncommit扩展程序,但实际上可能来自evolve扩展程序,我承认我不是 100% 确定!