Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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 通过关闭分支恢复丢失的有用更改_Version Control_Mercurial_Branch - Fatal编程技术网

Version control 通过关闭分支恢复丢失的有用更改

Version control 通过关闭分支恢复丢失的有用更改,version-control,mercurial,branch,Version Control,Mercurial,Branch,我对主(也是唯一)分支做了一些更改。然后我的同事做了一些其他的改变(B)。然后我发现变化(A)被彻底打破了,我决定完全放弃它们。另一方面,变化(B)非常好,幸运的是完全独立于变化(A)。变化(B)的数量远远小于变化(A) 通常,我只需hgcommit--closebranchas。但是,我丢失了更改(B),需要在新的活动分支中重新创建它们。我可以这样做,只需识别受影响的文件(手动),并更新它们(手动),然后提交即可。这显然不是完美的,因为它需要两个手动步骤,并且还会在存储库中创建一个误导性的提交

我对主(也是唯一)分支做了一些更改。然后我的同事做了一些其他的改变(B)。然后我发现变化(A)被彻底打破了,我决定完全放弃它们。另一方面,变化(B)非常好,幸运的是完全独立于变化(A)。变化(B)的数量远远小于变化(A)

通常,我只需
hgcommit--closebranch
as。但是,我丢失了更改(B),需要在新的活动分支中重新创建它们。我可以这样做,只需识别受影响的文件(手动),并更新它们(手动),然后提交即可。这显然不是完美的,因为它需要两个手动步骤,并且还会在存储库中创建一个误导性的提交(误导性是因为这些更改是我的同事不久前做的,但看起来好像是我今天做的)。我想这不是世界末日,但有没有更优雅的解决方案

注意:如果Mercurial支持只将差异从一个提交应用到修订树中的另一个位置,那么它就可以工作了。但是我怀疑这个特性不存在,原因很好:当逐字应用到另一个父变更集时,diff与现有父变更集是非常罕见的

  • --关闭分支
    还有另一个理由,那就是放弃错误的变更集
  • 您可以通过提供“撤消变更集”来撤消早期历史中显示的任何变更集,读取
    hg help backout
    ,通常
    hg backout CSET-HASH
    反向更改,在CSET-HASH中完成,以增加repo中提交的成本
  • 使用回退来消除旧变更集(第7版撤销第3版)的影响的示例

  • 可以在分支之间选择变更集,阅读
    hg-help-graft
    (基于合并的注入逻辑,而不是旧的
    hg-transplant
    )。有用或无用是人类选择的问题,在新父代之上嫁接的变更集的可操作性(无合并冲突)是嫁接本身的责任
  • 如果嫁接合并导致冲突,嫁接过程将中断,以便手动解决当前合并

  • --关闭分支
    还有另一个理由,那就是放弃错误的变更集
  • 您可以通过提供“撤消变更集”来撤消早期历史中显示的任何变更集,读取
    hg help backout
    ,通常
    hg backout CSET-HASH
    反向更改,在CSET-HASH中完成,以增加repo中提交的成本
  • 使用回退来消除旧变更集(第7版撤销第3版)的影响的示例

  • 可以在分支之间选择变更集,阅读
    hg-help-graft
    (基于合并的注入逻辑,而不是旧的
    hg-transplant
    )。有用或无用是人类选择的问题,在新父代之上嫁接的变更集的可操作性(无合并冲突)是嫁接本身的责任
  • 如果嫁接合并导致冲突,嫁接过程将中断,以便手动解决当前合并


    抱歉,不理解您的评论1。你的意思是我不应该为此使用
    --close branch
    ;若然,原因为何?或者你的意思是它也可以用于其他目的;如果是这样,那是为了什么?@Max-是的,你不能因为没有帮助而使用--close分支--提交时关闭分支只需将此分支头标记为已关闭,即从
    hg heads
    (默认)输出中隐藏抱歉,不理解您的注释1。你的意思是我不应该为此使用
    --close branch
    ;若然,原因为何?或者你的意思是它也可以用于其他目的;如果是这样,那是为了什么?@Max-是的,你不能因为没有帮助而使用--close分支--提交时关闭分支只需将此分支头标记为关闭,即从
    hg heads
    (默认)输出隐藏“如果Mercurial支持仅将提交的差异应用到修订树中的另一个位置,则它会起作用。”–确实如此,该命令称为
    graft
    。另外,
    rebase--keep
    也做了类似的事情。“如果Mercurial支持将一个提交的差异应用到修订树中的另一个位置,那么它就可以工作了。”–确实如此,用于此操作的命令称为
    graft
    。另外,
    rebase--keep
    也做了类似的事情。
    >hg log -r 3:7 --template "{rev}:{node|short}\n{desc}\n\n"
    3:2f09429039a6
    Немного более русские даты
    
    4:97419f57d7db
    Заготовки под перевод
    
    5:674a76db96fd
    UTF8 и перевод assigncategories
    
    6:9cd6b52df09f
    Подчистки локализации
    
    7:c2a2812d11ad
    Backed out changeset: 2f09429039a6