是否可以用另一个覆盖分支?
或者是删除分支B并从分支A创建新分支的唯一解决方案吗?
答案 0 :(得分:22)
除非你正在运行TFS 2010,否则我建议使用Merge + Resolve使这两个分支同步。
# cancel out of conflict dialog
tf merge A B -r -force -version:T
tf resolve B -r -auto:acceptTheirs
除了仅在B中创建且永不合并的文件之外,应该均衡所有内容。使用Folder Diff查找&调和它们。
2005/2008中的Delete + rebranch将来会冒着噩梦到调试命名空间冲突的风险。如果你有2008年,另一个选择是Destroy + rebranch。显然,假设您可以从B的原始副本中丢失所有历史记录。
答案 1 :(得分:17)
在Visual Studio 2010中,我只是使用baseless合并来实现此目的:
Tf merge / baseless [源路径] [目标路径] /递归
当弹出解决冲突窗口时,选择“Take source version”选项。注意,使用baseless merge不会删除目标中只存在的文件,但您可以比较2个分支以识别差异并手动删除它们。
答案 2 :(得分:6)
我使用Richard Berg's answer取得了成功,但感觉有一些细节遗失了。这就是我能够消除与冲突解决方案和变更集相关的差异,这些差异尚未合并回源并使目标与源相同。请注意,这就是我将如何引用分支 - source是不应该更改的,而target是应该与source相同的那个。
tf merge $/target $/source /recursive /discard
注意:确保已将工作文件夹设置为工作区内的路径,以便tf工具知道要使用的工作区和TFS服务器。
检查应解决的分支之间是否存在差异 - 如果不存在,则无需采取进一步措施。
3.1。查看目标分支上的历史记录,找到从源到目标的最后一次完整合并(忽略任何樱桃选择合并,因为这将导致大量误报) - 记下变更集编号。更简单的替代方法是执行从源分支到目标分支的合并,以从源分支到目标分支获得最新版本。
3.2。右键单击Source Control Explorer中的源分支,然后从上下文菜单中选择Compare。如果在步骤2.1中将源分支合并到目标分支,则仅获取源的最新版本。否则,从源版本中选择更改集键入组合框,然后输入步骤2.1中的变更集编号。
3.3。使用“目标路径”字段旁边的“浏览”按钮上的下拉箭头选择“服务器路径”。然后在打开的对话框中选择目标分支。
3.4。在Compare对话框中单击OK以执行比较。
tf merge $/source $/target /recursive /force /version:T
注意: T版规范表示最新版本。
答案 3 :(得分:-1)
删除分支B并从分支A创建一个新分支。
你有什么理由不想这样做吗?