Mercurial:恢复文件

时间:2010-07-27 16:17:44

标签: mercurial

我想恢复在某个提交中已删除的文件,并以不同的名称恢复它,以便它共享历史记录。在颠覆中,我会做

svn cp src@REV dest

即。使用挂钩修订。 Mercurial中的等价物是什么?

2 个答案:

答案 0 :(得分:7)

我认为Mercurial没有内置的方法来做到这一点。但我认为你可以通过以下方式获得同样的效果:

hg up -C REV # Update to revision containing a copy of the file
<modify the file in question>
hg commit  # Create second head based on old revision
hg merge # Merge two heads into one
# Note: make sure to choose to have the file exist
hg commit
hg mv MYFILE MYNEWNAME

这将使文件保留所有旧历史记录,因为最佳Mercurial可以跟踪它。

答案 1 :(得分:7)

不仅仅是(如果你在REV + 1中“hg remove”d src):

hg revert -rREV src
hg status
A src
hg rename src dest
hg commit -m"restored src and renamed it to dest"

工作?

已编辑:我刚刚测试过它,似乎没问题。实际上src不需要“hg add”,因为revert正在处理这个问题。但是,如果您只执行一次提交而不是两次(如上面的代码中所示),hg将发出警告:

  

src尚未提交,所以没有   复制数据将存储为dest。

希望它会有所帮助。