问题 将开发分支合并到Main:合并没有变化


我的主分支有一些文件,它们与开发分支的同一文件有不同的代码。开发分支是具有这些文件的正确版本的分支,但是当我尝试将其合并到主分支(目标)时;我收到一条消息说

合并没有变化

如何解决该问题,以便主分支具有这些文件的正确版本?


6317
2017-12-21 14:40


起源

也可以看看: stackoverflow.com/q/6190739/736079 - jessehouwing
在我的情况下,这是分散注意力。我已经合并了! - sergiol


答案:


合并文件时,TFS不仅会查看两个分支之间的差异,还会跟踪您是否在先前的合并尝试中忽略了这些更改。合并TFS时,在发生冲突时为您提供3个选项:

  1. 合并
  2. 保持来源
  3. 保持目标

当你选择 保持目标 或者当您手动合并和取消选择某些更改时,TFS会将这些更改标记为“已解决”,并且在您将来尝试合并时不会再次提供这些更改。这被称为“合并信用”。

您还可以在使用时使用命令行创建这些问题 tf merge /discard 这会告诉TFS在考虑合并时忽略那些文件/变更集的变化。

有两种方法可以强制TFS重新考虑这些变化:

  1. 使用强制合并。在命令行上,您可以启动合并,其中TFS将暂时忽略它的记录,并将为您提供合并的每个不同文件。这可能需要做很多工作,但一旦完成,您的合并历史就会恢复正常。发出强制合并运行 tf merge $/Source/Folder/File $/Target/Folder/File /force 这几乎肯定会引发合并冲突,您可以解决该冲突以在目标分支中获得正确的更改。

  2. 使用Rollback撤消先前的合并。如果您最近完成了已弃用更改集的合并。在历史记录中找到它,右键单击变更集并选择 回滚 并检查已撤消的代码。这实际上将删除该变更集中的所有更改,并将重置“合并信用”。完成此操作后,您可以重做合并,并在此时正确执行。这也可以从命令行使用 tf rollback


10
2017-12-21 14:54



我试图回滚但是我收到一条错误消息,说我的文件有不兼容的挂起更改 - aidonsnous
首先执行撤消待定更改(或搁置现有更改) - jessehouwing
如果你有片刻杰西 - stackoverflow.com/questions/33003274/revoking-tfs-merge-credits - RobVious