在Mercurial中,我可以在两个分支之间合并一些文件吗?

Ian*_*ose 6 merge mercurial

阅读Mercurial,似乎总是分支和合并完整的存储库.

是否可以将一些文件从一个分支合并到另一个分支?(例如,我可能只希望合并修复给定错误的文件.)

同样我可以选择一些更改集,但仍然有一个正确的合并记录,所以如果我完成合并后来完成它是正确的吗?

我来自一个强大的"心态",所以可能会以错误的方式思考这个问题.

Pau*_*l S 9

是的,Mercurial总是分支并合并整个树.您没有"灵活性"这样的东西可以perforce让您为合并选择单个文件.这是一件好事(相信我).变更集是原子的(你不能拆分它们)和不可变的(你不能改变它们).因此,这需要一点心态变化.

变更集应针对一个任务,仅针对一个任务.如果您正在修复错误,除了错误修复之外,更改集中没有任何其他内容.然后你有一个变更集来记录这个bug修复,你没有想要拆分它的问题.想要没有意义.半个bug修复通常比没有bug修复更糟糕.

在合并时,有几个选择:

  • 有一种观点认为你应该回到引入bug的地方.修理它.提交(创建一个小的匿名分支),并将其合并到你想要的任何头上(开发,稳定,发布,等等).但这并不总是实用的.
  • 另一种方法是修复发布分支中的错误,然后合并到开发分支.这通常很有效.
  • 或者你可以在开发分支的头部修复它,但是如果你将它合并到你的发布分支,你将带来所有的开发变化.这是graft(2.0中的新内容)和较旧的transplant扩展发挥作用的地方.它们允许您从另一个分支"挑选"一个或一系列变更集,并将它们放在另一个分支上.


Laz*_*ger 2

阅读 Mercurial,它似乎总是分支和合并完整的存储库。

是的

是否可以将一些文件从一个分支合并到另一个分支?(例如,我可能只想合并修复给定错误的文件。)

只需触摸所需变更集中的“某些文件”,并将头部中具有此变更集的分支与另一个分支合并随时移植

同样,我可以挑选一些更改集,但仍然有正确的合并记录,所以如果我稍后完成合并,它是正确的吗?

是的,可以移植| 对另一个分支的任何变更集,应用的状态将被记住,并且在最终合并时不会重复更改