【问题标题】:TortoiseHg removing added files during mergeTortoiseHg 在合并期间删除添加的文件
【发布时间】:2015-08-11 23:50:20
【问题描述】:

我有一个存储库,其中有两个分支 MAINFEATURE1。分支后不久,我需要修复错误,然后用版本号标记 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


【解决方案1】:

显然,TortoiseHg 工作正常。我的挫败感是因为误读了 UI。

每当您在 TortoiseHg 中更新到不同的修订版时,它都会为您提供一个带有复选框的对话框,允许您丢弃当前分支中未提交的更改。

丢弃本地更改,不备份 (-C/--clean)

合并时,消息相似,但含义截然不同。

放弃合并目标(其他)修订版中的所有更改

第一个表示您要撤消未提交的更改,而第二个表示您要合并分支而不带来任何更改。

顺便说一句,我不明白为什么会有这个功能。为什么要合并分支而不迁移更改?关闭分支似乎更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多