Version control 通过关闭分支恢复丢失的有用更改
我对主(也是唯一)分支做了一些更改。然后我的同事做了一些其他的改变(B)。然后我发现变化(A)被彻底打破了,我决定完全放弃它们。另一方面,变化(B)非常好,幸运的是完全独立于变化(A)。变化(B)的数量远远小于变化(A) 通常,我只需Version control 通过关闭分支恢复丢失的有用更改,version-control,mercurial,branch,Version Control,Mercurial,Branch,我对主(也是唯一)分支做了一些更改。然后我的同事做了一些其他的改变(B)。然后我发现变化(A)被彻底打破了,我决定完全放弃它们。另一方面,变化(B)非常好,幸运的是完全独立于变化(A)。变化(B)的数量远远小于变化(A) 通常,我只需hgcommit--closebranchas。但是,我丢失了更改(B),需要在新的活动分支中重新创建它们。我可以这样做,只需识别受影响的文件(手动),并更新它们(手动),然后提交即可。这显然不是完美的,因为它需要两个手动步骤,并且还会在存储库中创建一个误导性的提交
hgcommit--closebranch
as。但是,我丢失了更改(B),需要在新的活动分支中重新创建它们。我可以这样做,只需识别受影响的文件(手动),并更新它们(手动),然后提交即可。这显然不是完美的,因为它需要两个手动步骤,并且还会在存储库中创建一个误导性的提交(误导性是因为这些更改是我的同事不久前做的,但看起来好像是我今天做的)。我想这不是世界末日,但有没有更优雅的解决方案
注意:如果Mercurial支持只将差异从一个提交应用到修订树中的另一个位置,那么它就可以工作了。但是我怀疑这个特性不存在,原因很好:当逐字应用到另一个父变更集时,diff与现有父变更集是非常罕见的
--关闭分支
还有另一个理由,那就是放弃错误的变更集hg help backout
,通常hg backout CSET-HASH
反向更改,在CSET-HASH中完成,以增加repo中提交的成本hg-help-graft
(基于合并的注入逻辑,而不是旧的hg-transplant
)。有用或无用是人类选择的问题,在新父代之上嫁接的变更集的可操作性(无合并冲突)是嫁接本身的责任--关闭分支
还有另一个理由,那就是放弃错误的变更集hg help backout
,通常hg backout CSET-HASH
反向更改,在CSET-HASH中完成,以增加repo中提交的成本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