【发布时间】:2015-08-11 23:50:20
【问题描述】:
我有一个存储库,其中有两个分支 MAIN 和 FEATURE1。分支后不久,我需要修复错误,然后用版本号标记 MAIN。这些是分支后 MAIN 上的唯一更改。我一直在FEATURE1中工作并添加了几个文件。
1--2----4--5
\
3--------6--7--8
- 3 - 已创建分支
- 4 - 错误修复
- 5 - 添加了标签
- 6-8 - 功能更改
注意错误修复和功能之间存在一个冲突更改。
现在,我的功能已经完成,我想将 FEATURE1 (8) 合并到 MAIN (5) 中。但是当我执行合并时,似乎我的任何更改都没有移动到 MAIN 分支中。
当我在没有提交的情况下执行合并时,我注意到了一些事情:
- 在源分支 (FEATURE1) 中添加的所有文件都被标记为删除。
- 有很多
.orig文件(我不知道这些是什么)。这些标记为?(未知操作)并且未提交。 - 现有文件按预期标记为“M”(已修改),但未迁移更改。
这几乎就像它以 MAIN 作为源和 FEATURE1 作为目标,但我确定我正在合并到 MAIN。我更新到 MAIN (5),右键单击 FEATURE1 (8),然后选择 Merge to Local...。结果分支按预期显示为 MAIN 的一部分。
我以前从未使用 TortoiseHg 或 Mercurial 进行分支。我习惯了 TFS,我觉得我得到了相反的行为。
基本上,我希望我在 FEATURE1 中所做的更改出现在 MAIN 中。
【问题讨论】:
-
.orig 文件仅在您有未解决的合并冲突时才重要,它们似乎是在发现冲突并尝试解决它们时自动生成的。不幸的是,当一切都解决时,它们似乎不会自动清理。只需将它们添加到您的忽略列表中即可。
-
问题是其中一些正是我想要迁移的更改。为什么我的新文件会被标记为删除?
-
有可能由于某种原因,执行自动合并的任何工具都默认丢弃传入的更改。你知道它使用的是什么工具吗?您可以尝试从命令行而不是 Workbench 运行合并,甚至可以显式指定工具,以便在运行之前验证任何设置。
-
@Nanhydrin,谢谢。我正在检查“放弃更改”框,认为它会放弃我在 MAIN 分支上未提交的更改,但它正在放弃 FEATURE1 分支上的更改。回答,复选标记是你的。
-
谢谢你,但你最好回答这个问题,并准确概述你为追随我们的人所做的一切,我只是在黑暗中刺伤 :)
标签: mercurial tortoisehg branching-and-merging