合并开发分支到主干:没有需要合并的更改。

20

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

 

没有要合并的更改

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


参见:https://dev59.com/Km025IYBdhLWcg3wJCVD - jessehouwing
1
在我的情况下,那是分心。我已经完成了合并! - sergiol
3个回答

20
当合并文件时,TFS不仅会查看两个分支之间的差异,还会跟踪您是否在以前的合并尝试中忽略了这些更改。当有冲突时,TFS提供3个选项:
1. 合并 2. 保留源文件 3. 保留目标文件
当您选择“保留目标文件”或手动合并并取消选择某些更改时,TFS将标记这些更改为“已解决”,并且在将来尝试进行合并时不再提供它们。这称为“合并信用”。
您还可以在使用tf merge /discard命令时通过命令行创建这些问题,该命令告诉TFS在考虑合并时忽略那些文件/变更集中的更改。
强制TFS重新考虑这些更改有两种方法:
1. 使用强制合并。在命令行上,您可以启动一个合并,其中TFS将暂时忽略其记录,并为您提供每个不同的文件进行合并。这可能是很多工作,但一旦完成,您的合并历史记录将恢复正常。要发出强制合并,请运行tf merge $/Source/Folder/File $/Target/Folder/File /force /version:T。这几乎肯定会引发合并冲突,您可以解决它以获取正确的更改。
2. 使用回滚撤消先前的合并。如果您最近进行了舍弃变更集的合并,请在历史记录中找到它,右键单击变更集,然后选择“回滚”并提交已撤消的代码。这实际上会删除该变更集中的所有更改,并重置“合并信用”。完成此操作后,您可以重新执行合并并做正确的事情。这也可以使用tf rollback命令行完成。

1
我尝试回滚,但是收到了一个错误消息,说我的文件有不兼容的待处理更改。 - aidonsnous
2
首先执行撤销挂起的更改(或将您现有的更改搁置)。 - jessehouwing
如果你有时间,Jesse - https://dev59.com/aI_ea4cB1Zd3GeqPT9_s - RobVious
1
选项1对我有用,但我必须在命令中包含/version:T。 T表示TF命令使用最新版本。 - Seymour

0
我刚刚遇到了类似的问题,但是我的问题是不同的——请确保你的源代码控制资源管理器和待处理更改工具箱都指向同一个工作区!

0

force merge 命令缺少双引号,应该像下面这样:

tf merge "$/Source/Folder/File.cs" "$/Target/Folder/File.cs" /force /version:T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接