与Mercurial: Merging one file between branches in one repo相关,我正在尝试对单个文件执行回退操作,即使该文件是被回退的修订的众多参与者之一。
HG是一个面向变更集的工具,它不想对文件进行操作。
我能找到的最接近的方法是使用hg export创建一个diff,手工编辑diff,然后hg import以相反的顺序修补文件。
然后我遇到了这种恼人的情况,http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html声称有一个-- ..but选项可以返回到hg patch
,而实际上没有。
所以我能想到的最接近的方法就是像上面那样生成一个手工编辑的补丁,然后使用普通的补丁-R来应用一个反向补丁。
hg backout
命令在这里看起来很有用,但实际上是在转移注意力。
一定有更好的办法,不是吗?
发布于 2009-07-06 10:24:43
下面是我要做的:使用技巧修订版的新克隆。
hg backout --merge -r revision_where_the_change_happened
将反转的更改合并到工作副本中。
现在将有问题的文件复制到常规工作副本并提交
hg commit -m "Reversed the changes to file.h made in revision bla"
并丢弃你在上面创建的克隆。
这样,mercurial不知道revision_where_the_change_happened
和这个提交之间存在连接。如果您希望mercurial记住这一点,那么可以使用
hg revert {all files except the one in question}
在合并回退之后,提交到工作副本中,然后提交。对于第二种方式,您不需要在克隆上工作,因为您希望保留回退提交。
我猜测,选择使用哪种方式取决于特定文件更改在变更集中所占的比例。
发布于 2009-07-10 10:04:34
使用revert命令。
hg revert -r1 file
这应该会将文件的内容恢复到修订版1中的版本。然后,您可以进一步编辑它并像往常一样提交。
https://stackoverflow.com/questions/1086222
复制相似问题