15

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

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

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

有人对此有任何想法吗?谢谢。

4

3 回答 3

10

毫无根据的合并也会发生这种情况。当 TFS 在您要合并的分支之间没有现有的合并关系时,就会发生无根据的合并。结果,它认为两个分支中的每个文件都是“新的”,因此它“合并”了每个文件。

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

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

于 2014-04-02T10:36:48.797 回答
7

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

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

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

于 2009-06-26T13:10:17.993 回答
1

在 Visual Studio 2008 和 TFS 2008 中,不会发生这种情况。只有已更改的文件才会被标记为合并。如果您比较分支和主干之间的文件,是否有任何变化?编码等更改仍会使 TFS 合并此文件。

于 2009-06-25T19:44:49.963 回答