我有一个场景,我有一个主分支和一个从主分支获取的dev分支。 master分支包含一些dll的旧版本:我已经在dev分支中更新了。现在,当我尝试将我的更改从我的dev分支合并到主分支时,我得到了“Filname Collision”冲突。当然文件名会发生冲突,我已经更新了文件并希望使用我的新版本。但出于某种原因,我没有把本地作为解决问题的方法。我所能做的就是服务器,重命名服务器或重命名本地服务器。那是为什么?
答案 0 :(得分:3)
问题在于您替换了DLL而不是“更改”它,因此合并会识别出它是文件系统中一个完全独立的条目并抱怨。
我们无法通过GUI解决此问题,因此我们将转到命令 并适当地解决冲突。我们有决心 能够为目标文件指定新名称 - 您可以找到 所有选项here。我们的选择 将使用
AcceptYoursRenameTheirs
并在命名空间中冲突它 接受文件的内容和名称(来源)并重命名 (目标)文件到指定的新名称。要完成此操作,我们还需要使用
/newname
选项。这里 是你应该执行的命令:tf resolve a.txt /auto:AcceptYoursRenameTheirs /newname:a-old.txt
此命令成功后,您将收到两个待处理的更改:1)a 合并,将新
a.txt
分支到目标文件夹中,2)重命名a.txt
中的a-old.txt
到target
。因此,在检查这些更改后 合并关系将如下所示:source/a.txt à target/a.txt
就像你想要的那样。如果相反,你想要发生相反的事情,这意味着你 需要
source/a.txt
映射到目标文件夹中的新名称然后 要执行的命令是:tf resolve a.txt /auto:AcceptMerge /newname:a-newname.txt
因此,这将为您提供
的合并关系source/a.txt -à target/a-newname.txt
随着冲突的解决,开发人员现在可以自由办理登机手续 这次合并带来的变化。
答案 1 :(得分:1)
如果您在源代码管理中删除二进制文件并稍后添加,则大多数情况会发生这种情况。 所以我认为你正在使用以下工作流程:
我的工作流程看起来像这样(大部分时间都在工作):