53

我有一个提交,我已经修改了一些文件。其中一些文件是我不希望在此提交中进行的修改的一部分。Mercurial 中有没有办法从提交中删除某些文件而不会丢失我对它们所做的更改?谢谢你。

脚步:

  1. 做了一些改动
  2. hg 提交 -m
  3. 进行了更多更改(其中一些文件意外修改)
  4. 汞修正
4

2 回答 2

87

试用:

hg forget somefile.txt
hg commit --amend

如果文件是新的(即您使用了 hg add)。

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

cp somefile.txt somefile.txt.bak
hg revert somefile.txt --rev .~1
hg commit --amend

这基本上是告诉 mercurialrevert将文件 ( somefile.txt) 恢复到一次修订前的状态 ( --rev .~1)。

只需确保在输入命令之前备份要还原的文件,以免丢失更改。我的印象是 mercurial 会自动为您执行此操作,但在快速测试后我不太确定。

于 2013-09-16T10:02:33.560 回答
1

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

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

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

于 2020-09-10T02:35:45.707 回答