Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control Hg(Mercurial):任何方式;留出;工作副本以后用?_Version Control_Mercurial_Shelve - Fatal编程技术网

Version control Hg(Mercurial):任何方式;留出;工作副本以后用?

Version control Hg(Mercurial):任何方式;留出;工作副本以后用?,version-control,mercurial,shelve,Version Control,Mercurial,Shelve,场景:在上次提交之后,您决定对代码库进行一些广泛的重构。过了一段时间,您意识到重构所花费的时间比预期的要长,您真的宁愿将重构推迟到另一个时间,并处理更紧迫的任务。但是,您不想失去迄今为止所做的所有重构工作 那么,有没有一种方法可以“归档”或“分支”工作副本(基本上,将其放在一边,但保留在存储库中供以后访问),然后恢复到最后一个良好的提交并从那里恢复,而不必担心创建多个头或混淆两个头?您可以使用mq执行此操作,阁楼或搁架扩展。在git中,您可以进行“隐藏”。根据hg的说法,它有“搁置”,但需要扩展

场景:在上次提交之后,您决定对代码库进行一些广泛的重构。过了一段时间,您意识到重构所花费的时间比预期的要长,您真的宁愿将重构推迟到另一个时间,并处理更紧迫的任务。但是,您不想失去迄今为止所做的所有重构工作


那么,有没有一种方法可以“归档”或“分支”工作副本(基本上,将其放在一边,但保留在存储库中供以后访问),然后恢复到最后一个良好的提交并从那里恢复,而不必担心创建多个头或混淆两个头?

您可以使用mq执行此操作,阁楼或搁架扩展。

在git中,您可以进行“隐藏”。根据hg的说法,它有“搁置”,但需要扩展

  • 为重构修订指定一个标记
  • 提交标签
  • 再次克隆存储库
  • 恢复到稳定版本
  • 从稳定版本开始工作
  • 不要担心多个头,以后可以轻松合并
  • 因为mercurial使用硬链接,所以您可以在本地机器上保留这两个存储库,并且占用的空间最小。 命令:

    $hg标记重构
    $cd..
    $hg克隆重构稳定
    $cd稳定
    $hg revert-r版本号

    额外帮助:

    不要担心“两个脑袋的恐惧”。双头是一种非常正常的状态。它被称为匿名分支,这是人们在Mercurial中执行临时分支的方式之一

    只需提交,然后更新到tip-1,您就可以开始了:

    hg commit -m "working on XXX"
    hg update -r "tip-1"
    
    然后你就走了。如果你想在头上放一个书签(没有标签那么永久),你可以,但没必要担心

    使用
    hg push-r head
    可以推动一个头部而不推动另一个头部,甚至可以推动
    hg push-r。


    不要害怕人头——正是人头让基于DAG的VCS变得强大。

    你可以用简单的方法做到这一点:

    $ hg diff -g > tmp
    $ hg revert --all
    
    您的更改现在将存储在
    tmp
    中。您可以使用

    $ hg patch --no-commit tmp
    

    你会回到原来的地方。有这样的扩展可以为您自动执行上述操作。

    克隆存储库并从中工作如何?如果没有克隆,我会得到相同的结果吗?如果我标记工作集,提交它,然后更新到以前的版本,结果会和您提到的稳定的repo一样,重构更改仍然可以通过标记使用吗?是的,这也可以。克隆的想法是,如果你想快速地在两者之间来回移动。在这两种情况下,变更集将负责合并。我只是找不到+5按钮,恐怕你只能接受+1。老兄,这帮了我大忙。非常感谢。