使用 Mercurial 在分支之间仅合并一些 files/changesets

Merge only some files/changesets between branches with Mercurial

注意: 一个类似的问题,Mercurial: Merging one file between branches in one repo,专门询问有关合并的问题 "only certain files, instead of whole changeset?" 与此相反,我可以合并某些变更集,而不是来自变更集的单个文件。


我有一个与 VCS 相关的问题,但我找不到答案(可能没有通过谷歌搜索正确的词)。也许整个想法是有缺陷的。请告诉我。

假设在我的版本控制存储库中有两个分支,defaultfeature。在处理该功能时,我编写了一个不错的函数 foo.py。我们决定放弃整个功能开发,因此 feature 分支将在不合并到 default 的情况下关闭。 feature 中的文件不应该出现在 default 中,有一个例外——我们确实想保留很好的 foo.py 功能,所以它应该出现在 default 中。

是否可以不在 VCS 外操作文件(这会导致历史丢失)?例如,我能否以某种方式仅合并 foo.py 为 created/modified 的变更集?

这种情况的一个(现实)变体是 foo.py 最初是从 default 纳入 feature。在 feature 中工作时,我修改了 foo.py。现在我想放弃 feature 但在 default.

中修改 foo.py

非常感谢!

单个变更集可以 grafted 到另一个分支。

这个answer展示了如何使用thg嫁接。