我对主(且唯一)分支做了一些更改(A)。然后我的同事做了一些其他的改变(B)。然后我发现变化(A)已经绝望了,我决定彻底抛弃它们。另一方面,变化(B)非常好,幸运的是完全独立于chanegs(A)。变化(B)的体积远小于变化(A)。通过关闭分支来恢复丢失的有用更改
通常,我只是hg commit --close-branch
为described here。但是然后我失去了变化(B),并且需要在新的活动分支中重新创建它们。我可以通过简单地识别受影响的文件(手动)并更新它们(手工)然后提交来实现。这显然并不完美,因为它需要两个手动步骤,并且还会在存储库中创建一个误导提交(误导,因为更改是由我的同事在不久前完成的,但看起来好像它们是我今天创建的)。我想这不是世界末日,但是有没有更优雅的解决方案?
注意:如果Mercurial支持将仅从差异从一个提交到修订树中的另一个位置,它将会起作用。但是我怀疑这个特性并不存在,原因很多:当逐字地应用到另一个父变更集时,diffs vs现有父变更集非常有用。
“如果Mercurial支持仅应用差异从一个提交到另一个位置在修订树中,它就会起作用。” - 它的命令称为'graft'。同样'rebase --keep'也会做类似的事情。 –