为什么所有文件都标有';合并';在TFS中?

为什么所有文件都标有';合并';在TFS中?,tfs,merge,tfs-power-tools,Tfs,Merge,Tfs Power Tools,我正在将我的开发分支合并到主分支中。在我的开发分支中,我只更改了一部分文件,所有其他文件都应该保持不变。从逻辑上讲,我只想合并已更改的文件。我不会签入我没有更改的文件 但当我在TFS中执行合并操作时,它会将树中的每个文件都标记为更改类型“merge”。看起来我必须签入整个源代码树中的每个文件!我真的不想这样做,因为这样就不可能查看变更集并查看作为项目的一部分我实际更改了哪些文件 起初,我认为可以使用tfpt.exe Undo Unchanged命令撤消所有“merge”更改,但这不会撤消这些更改

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

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

起初,我认为可以使用tfpt.exe Undo Unchanged命令撤消所有“merge”更改,但这不会撤消这些更改


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

在Visual Studio 2008和TFS 2008中,这不会发生。只有已更改的文件才会标记为“合并”。如果对分支和主干之间的文件进行比较,是否有任何更改?编码等更改仍将使TFS重新合并此文件。

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

  • 您对的父文件夹执行了命名空间操作(删除、取消删除、重命名) 标记为“合并”的文件
  • 您执行了已在目标分支中执行的命名空间操作(删除、取消删除、重命名)
  • 您执行了一系列名称空间操作,这些操作折叠成一个no-op(例如delete+undelete,或rename a->b->a)
  • 还有未解决的冲突
  • 您正在执行丢弃

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

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

要创建合并关系,以便将来的合并只列出您实际更改的文件,您需要将所有更改无基础地合并到指定版本,以便TFS知道公共基线应该是什么。您应该在合并这些更改后执行此操作-现在更正此分支的基线已经太迟了


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

我们有TFS 2008,但visual studio 2005创建!我有TFS2008,但VS2005,所以我想这是客户端的一个函数。不,挂起的更改完全在服务器上计算。有关详细信息,请参阅VersionControlServer.QueryPendingSets()API。无论哪种方式,编码更改或任何代码更改都会将此标记为需要合并。TFS 2010和VS 2010仍然会发生这种情况。事实上,即使VSTS联机,也会发生这种情况。如果重命名分支,也会出现这种情况。^Yup。可能会认为它是一个特殊的情况1,但是“根更名”实际上在TFS中有特殊的处理,所以值得一提…谢谢。这在我们的TFS 2010服务器中经常发生。我们没有做你清单上的任何事情。