Mercurial:在提交所有内容时,最简单的方法是恢复到旧版本的文件?

时间:2015-11-17 23:42:43

标签: version-control mercurial

为了简单起见,假设我有一个包含5个变更集的回购。我在变更集2和4中修改了文件A.然而,我是一个邋program的程序员,我在4中所做的更改是错误的。我希望将文件恢复到变更集2中的确切位置。其余的变更集会解决我不想恢复的其他文件。

最好的方法是什么?我只知道愚蠢/不聪明的方式:(

    changeset: 1
    user: jdf
    date:
    summary: first change, other file

    changeset: 2
    user: jdf
    date:
    summary: file A change - this is the file I want in this state

    changeset: 3
    user: jdf
    date:
    summary: change, other file

    changeset: 4
    user: jdf
    date:
    summary: file A change - this was dumb and I don't want it

    changeset: 5
    user: jdf
    date:
    summary: change, other file

因此,在假设的变更集6中,我将文件A置于变更集2之后的相同状态,但没有丢失变更集3和5中的工作。

2 个答案:

答案 0 :(得分:3)

答案取决于你在变更集4中所做的一切是否愚蠢,或者你是否只想恢复变更集2中的这个文件。

如果变更集4中的所有内容都是个坏主意,请撤消整个变更集:

hg backout -r4

如果您只需要将单个FILE的状态恢复为变更集2的状态,则使用

hg revert -r2 FILE

答案 1 :(得分:2)

您可以使用hg backout -r <changeset>

backout的文档:

  

通过应用与要撤消的变更集相反的变更集来进行回退。新的变更集将提交到存储库,并最终合并