好的,在TFS中我们有一个主 trunk 分支和另一个分支,我们称之为 secondary 。我们在 trunk 中创建了一个新文件,但在尝试合并该特定文件时,它没有为我们提供合并到 secondary 分支的选项。我们假设这是因为辅助文件中不存在类似的文件。
这是问题的原因吗?如果是,我们如何才能将 trunk 中的新文件导入 secondary ?
这里,我们正在合并 secondary 中存在的文件。如您所见,下拉列表列出了我们所有的三个分支( secondary 实际上是中间分支):
现在,当我尝试合并辅助分支后在 trunk 中创建的文件时, secondary 不再列为目标分支。
答案 0 :(得分:10)
尝试合并该特定文件
要了解TFS,有助于记住变更单位是变更集,而且是签入和合并的变更集(不是文件)。
我们假设这是因为辅助
中不存在类似的文件
这是正确的 - 在目标分支所在的版本(变更集编号)处,此文件根本不存在,因此无需合并。
通常,您在合并源对话框中选择特定的文件并没有获得任何收益 - 正如它所说,它要求您选择源和目标分支。在根目录中指定分支,选择Selected changesets only
,TFS将显示源中存在但尚未合并到目标的变更集列表。如果您只想要添加此新文件的文件,可以在该列表中选择它。
答案 1 :(得分:6)
我认为这应该可以通过VS GUI实现,如下所示:
选择添加新文件的文件夹,并订购(整个文件夹的)合并到 secondary < / em> branch。
现在所有已更改的文件夹文件都会显示在待处理列表+新文件中。
撤消所有其他文件&amp;继续只检查一个重要的文件。
有人可能会说,对TFS的这种限制实际上是有道理的:
答案 2 :(得分:5)
“现在,当我尝试合并在辅助分支后在主干中创建的文件时,辅助不再列为目标分支。”
为此,右键单击Source Control Explorer中的文件,然后选择Branch而不是Merge。然后,将显示一个指定目标的对话框。
一般来说,最好合并主干和辅助而不是它的一部分(随着时间的推移更容易保持分支一致)。
答案 3 :(得分:1)
我认为原因只是你不能合并一些尚未分支的东西。请注意,如果合并包含新文件的文件夹,则表示操作为[merge,branch],表示您正在将新文件作为父文件夹合并的结果进行分支。据我所知,选择文件&gt;合并与分支&gt;分支,而不是合并似乎是解决方案。我看到的唯一区别是历史然后列出它有[分支]而不是[合并,分支]。在 secondary 分支中创建文件的分支后,可以将更改合并到分支之间的文件中。
答案 4 :(得分:-1)
您可以尝试使用TF Merge command