【问题标题】:tfs merge is missing new codetfs 合并缺少新代码
【发布时间】:2018-04-03 14:37:25
【问题描述】:

在我的默认集合中,我有一个团队项目。在那个团队项目中,我有 2 个分支:PROD 和 DEV。 最近,我主要从事 DEV 工作。因此,由于 PROD 和 DEV 之间变更集的数量是共同的,所以我遇到了当前的问题:

其中一个文件在 PROD (2470) 中的变更集编号低于 DEV (2539) 中的变更集编号(从我在合并工具中可以看到)

当我第一次从 PROD 合并到 DEV 时,TFS 没有看到需要合并的文件。

我有很多编译错误。所以我不得不在 DEV 中修改文件,进行签入,然后在合并期间,TFS 看到它并在解决冲突选项卡中要求我处理该文件。

但是,

在合并工具中,DEV 中的所有新代码都会被 PROD 中的代码覆盖。我不明白 ! 例如,DEV 中的文件有一些新的 using 指令。但是合并工具删除了它们,因为它正在选择 PROD 文件。所以大部分新代码都被较低的变更集隐藏了。

发生了什么事?我害怕现在合并或使用 TFS!

你有类似的问题吗?我能做什么?

添加了源浏览器树的图片: source explorer tree

【问题讨论】:

  • 另一个例子,如果PROD中存在一些新代码,它会从DEV中删除。我在 PROD 的一个类中添加了新成员,合并后,TFS 自动从合并文件中删除它们,就像它教导 PROD 中的成员是旧的并且在 DEV 中被删除一样。
  • 您能否详细说明分支是如何创建的?我从你的描述中假设 PROD 是 DEV 的孩子?在这种情况下,如果在 Prod 中进行了更改,则可以将它们合并到 DEV。
  • 您是否在合并过程中签入了一些文件而不是解决冲突?合并时,是否选择了最新版本的 DEV(签入代码后)?你有比较过最新的 DEV 和 PROD 吗?
  • @HamidShahid 开发是由 PRODuction 制作的。这也是我所期待的。检测到更改,但就像 TFS 认为 PROD 太旧,并且由于没有冲突,它会从 PROD 中删除新代码并将其合并到 DEV 中而无需通知。
  • @PatrickLu-MSFT 在合并过程中我没有签入某些文件。合并时,我使用最新版本的 PROD(我想将 PROD 合并到 DEV 中)。最新的 DEV 具有新功能,PROD 还修复了一些小错误。

标签: tfs merge-conflict-resolution


【解决方案1】:

首先,请检查您的 DEV/Prod 分支中是否有已删除的文件。为此,请进入“工具”、“选项”。展开“Source Control”,选择“Visual Studio Team Foundation Server”并勾选“Show deleted items in the Source Control Explorer”

最好取消删除 Dev 分支中的文件和文件夹,这样可以防止将来发生“奇怪的事情”。

除了使用合并向导,您还可以使用“tf merge”命令。

这将强制 TFS 合并更改,即使它认为之前已合并。

tf merge $/PROD $/DEV /recursive /force

如果您担心 TFS 中的合并过程会覆盖您在 DEV 分支中的新功能,您可以尝试添加 /preview 选项,这会显示合并的预览,而不是实际执行合并。或者使用/candidate 选项,它打印源中尚未合并到目标中的所有变更集的列表。该列表应包括尚未合并的变更集 ID 以及有关该变更集的其他基本信息。

更多详情请参考本期:Team Foundation Server merge not merging


如果您曾经重命名过您的 DEV 分支或 PROD 分支,您可能会遇到与此相同的问题:TFS Merge Issue with Missing New Files

如果还是不行,建议你先将 DEV 合并到 Prod,这应该覆盖 Prod 中的旧文件,然后将 Prod 合并回 DEV,然后小错误修复也会包含在 DEV 分支中。这可能会奏效,只要确保在解决冲突时选择了合适的版本即可。

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 2016-09-08
    • 2017-05-31
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2021-10-30
    • 2011-06-04
    • 2016-06-22
    相关资源
    最近更新 更多