代码之家  ›  专栏  ›  技术社区  ›  TheSean

为什么所有文件都在tfs中标记为“合并”?

  •  15
  • TheSean  · 技术社区  · 16 年前

    我正在将我的开发分支合并到主分支。在我的开发分支中,只有一个子集的文件发生了更改,所有其他文件都应该保持不变。从逻辑上讲,我只想合并已更改的文件。我不会签一个我没有更改的文件。

    但是当我在tfs中执行合并操作时,它用更改类型“merge”标记树中的每个文件。看起来我必须签入整个源代码树中的每个文件!我真的不想这样做,因为这样就不可能查看变更集并查看作为项目一部分我意外更改的文件。

    起初,我以为我可以使用tfpt.exe undo unchanged命令来撤消所有“合并”更改,但这不会撤消这些更改。

    有人对此有什么想法吗?谢谢。

    3 回复  |  直到 11 年前
        1
  •  7
  •   Richard Berg    16 年前

    有很多可能的原因。这不是完整的列表:

    • 对的父文件夹执行了命名空间操作(删除、撤消删除、重命名) 标记为“合并”的文件
    • 执行的命名空间操作(删除、撤消删除、重命名)已在目标分支中执行。
    • 您执行的一系列命名空间操作折叠为“不”操作(例如,删除+取消删除,或重命名a->b->a)
    • 存在未解决的冲突
    • 你在执行丢弃操作

    注:所有这些均适用于2005和2008年。

        2
  •  10
  •   Mike Dimmick    12 年前

    这也发生在无基础合并中。当TFS在要合并的分支之间没有现有的合并关系时,将发生无基合并。因此,它考虑到两个分支中的每个文件都是“新的”,因此它“合并”了每个文件。

    要创建合并关系,以便将来的合并只列出您实际更改的文件,您需要对指定版本之前的所有更改进行无基合并,以便TFS知道公共基线应该是什么。你应该这样做 之后 合并这些更改-现在更正此分支的基线为时已晚。

    如果您实际上不想从另一个分支进行任何更改,但只需告诉TFS这些更改在逻辑上是相同的版本,您可以对这些更改集进行合并“给予信任”: tf merge /discard .

        3
  •  1
  •   Ray Booysen    16 年前

    在Visual Studio 2008和TFS 2008中,不会发生这种情况。只有已更改的文件才会标记为合并。如果您比较分支和主干之间的文件,有什么变化吗?诸如编码之类的更改仍将使tfs将此文件合并回去。