2013-03-25 77 views
28

我们已经发生过这种情况超过几次了,我们认为这不仅仅是侥幸。当我们与我们的分支完成后,我们正在合并时,他们应该有更多的变化。因此,显示为未决更改的大部分文件都不会更改(在分支或基本中的大多数情况下)。当我比较他们(我使用无法比较)时,没有任何区别。我没有经历过所有没有改变,但在大多数情况下,它好像他们被标记为[merge]和实际修改过的文件被标记为[merge,edit]文件去了。进行合并时没有更改的文件列为未决更改?

在一种情况下,我们大概在100个文件就未决的改变显示出超过22000度的改变而改变。我们试着在一点上检查它们,认为tfs足够聪明,可以知道哪些文件发生了变化,哪些没有发生变化。但它检查了所有文件。有谁知道发生了什么以及如何解决它?

我们正在运行TFS2012瓦特\ UPDATE1
每个人都在使用Visual Studio2012瓦特\更新1

回答

20

关于在那里你改变了100个文件和TFS想合并几千问题。这通常是由renaming(或删除,然后取消删除或移动)分支引起的。这让我感到很痛苦,我感到很痛苦。

我能给出的最好的建议是,一旦你创建了一个分支,不要管它。不要移动它,不要重命名它。如果分支的位置或名称是错误的,那就直接删除分支并创建一个新分支。

因为幕后的方式TFS 201X工作,改变一个分支的根文件夹中有效地把它给不同的对象。当您尝试再次合并分支时,TFS将执行无基本合并,这实际上意味着分支中的所有文件都已更改(即使它们没有更改)。这是新行为,旧版本的TFS(2005/2008 )不会遇到这个问题。

例如你有一个团队项目,看起来像这样

$/TeamProject/Main

然后,从“主”被称为“开发”创建一个分支

$/TeamProject/Dev

你可以像你一样多,有合并不应该有任何问题。然后你决定,当你有多个开发分支,所以你在团队项目的根目录创建一个名为“发展”的文件夹,并在移动Dev分支到这个文件夹

$/TeamProject/Development/Dev

的文件夹结构可能会有点乱

OK现在的场景,此举是一个重命名和删除的背后,老Dev分支仍然$/TeamProject/Dev下存在(可以进入“工具”看到这一点,“选择”,“源头控制”,“Team Foundation Server的”然后检查,说:“源代码管理显示已删除项目”

的文件夹,名为$/TeamProject/Development/Dev实际上是一个全新的事物的设定!所以它与“Main”没有合并关系。令人困惑的是,虽然IDE会显示关系,但实际上它不存在。第一次从$/TeamProject/Development/Dev合并到$/TeamProject/Main TFS将执行一个鬼鬼祟祟的毫无根据的合并来建立分支关系。如果重命名一个分支(旧的分支将被删除,一个新的分支将在幕后创建)

This Blog去到一些更详细

+0

谢谢。这似乎是。我知道其中一个分支被b4试图合并。目前的我不确定,但那可能是。 – coding4fun 2013-03-26 17:07:39

34

对于具有任何

同样的事情发生同样的问题解决方法是撤消您的未决更改。当您收到确认对话框时,请选择“全否”。只有您的未决更改应该保留。

+2

这是我经常使用TFS2012和TFS2013的情况。您的解决方案非常棒! – 2013-12-13 15:58:08

+0

这也解决了我的问题。 – Dan 2014-04-04 19:52:52

+8

这适用于只更改文件的情况。它不会合并您添加的任何NEW文件。 – 2014-08-29 02:21:26

5

试试这个:通过“更改”列中的“撤消挂起的更改”对话框的排序文件

  1. 选择在上下文菜单中单击所有未决文件
  2. “撤消......”
  3. 取消选择所有文件,除了 '合并' 使用Shift +单击
  4. 点击按钮 '撤消更改'
4

上面的注释在撤销确认对话框中显示“No to all”选项可以正常工作,但是如Mark的注释,如果您有新文件,这将无法正常工作。姆拉登Mihajlovic是正确的,你可以确保不选择这些新文件。但是,如果有大量的代码库,通过这个过程非常繁琐。

所以我的方法:在进入确认对话框之前,您会看到一个窗口来选择要撤消的文件。该窗口具有可排序的列。您可以按Change列进行排序,并仅选择具有merge状态的文件(这些是未更改的文件; merge, edit是编辑文件,而merge, branch是新文件)。只需单击撤消更改,然后享受整洁合并变更集的美感。

Example

+1

我可以证实这个作品;非常快和容易做,谢谢! – Novastorm 2017-02-15 12:06:03

0

从我的经验,这发生在TFS有文件A之间的支路A和文件B分支B.

当合并分支TFS总是创建的文件之间的关系时,没有关系,没有关系已经存在。因此,它想检查为“合并”来记住这些关系。

我倾向于撤消这些“合并”更改,当我不需要关系(例如重新设置)时。

相关问题