16

当我使用 Visual Studio 2013 Professional 签入 TFS Express 2013 中的更改时,有一个“排除的更改”列表,其中包含 1541 个项目。

我从未告诉 TFS 排除更改,并且不明白为什么有人甚至想要“排除”更改(源代码控制不都是关于 SAVING 更改的吗???)。我有点担心我的更改没有被保存……但我什至不确定这是否意味着什么。我在 Google 上搜索了有关 TFS 中“排除的更改”的更多信息,但没有找到任何解释。

谁能向我解释一下:什么是排除更改?为什么我要排除更改?为什么有 1541 个我从未要求排除的已排除更改?我应该担心更改被排除在外吗?我应该将这些排除的更改更改为包含的更改吗?

4

2 回答 2

18

有许多事情可能会导致“更改”被排除在外:

  1. 默认情况下,团队资源管理器将忽略obj/*bin/*其他一些文件夹中的文件。以及某些扩展名,例如.csproj.user.
  2. 它们未加载到您当前的解决方案中,因此 Team Explorer 假定它们是作为不同解决方案的一部分制作的,并且您不想将它们与与您所在的上下文匹配的更改一起签入。
  3. 它们是在不同的工作区中制作的,Team explorer 再次假设您要签入在逻辑上有意义的文件组。
  4. 它们被手动从当前签入中排除。当您想首先签入一个修复了 Bug 123 的文件,然后签入另一组修复了 Bug 124 的文件时,您可以这样做。
  5. 在 Visual Studio 之外创建的文件永远不会自动添加,因此当您压缩一组 .cs 文件并且该 zip 文件最终出现在您的工作区文件夹中时,Team Explorer 会检测到它,但不会自动添加它。
  6. 这里可能会出现最后一个问题,如果由于某种原因尚未将项目添加到源代码管理中,或者解决方案文件中的绑定未正确签入,则添加到该项目的任何文件都将被忽略同样,因为 Visual Studio 假定该项目不应处于源代码控制之下。
  7. 使用“添加现有项目”不会自动将该项目置于与解决方案相同的源代码管理绑定之下。这将导致团队资源管理器假设为 6。
  8. 该路径之前可能已被“隐藏”或“未映射”,在事实之后映射文件夹不会告诉团队资源管理器添加它们。
  9. 您可能一直在脱机工作并使用服务器工作区。当您告诉 Team Explorer 重新联机时,您需要确保所有添加都正确完成。本地工作区没有这个问题,因为它可以在本地跟踪更改而无需与服务器对话。
  10. 您可能已从解决方案资源管理器(或单个项目或项目)或源代码管理资源管理器中的子文件夹中选择“签入待处理的更改”。当您这样做时,团队资源管理器将“待定更改”窗口的范围限定为仅与该上下文匹配的项目。所有其他更改都暂时移至“排除的更改”部分。

您应该检查 Excluded Changes 列表并使用您的.tfignore文件忽略它们。您也可以从 UI 中执行此操作,方法是右键单击此类排除的更改并选择通过路径/扩展名或模式忽略的选项。

在此处输入图像描述

基本上,如果您在“排除文件”部分看到内容,请右键单击/包含它们或将它们添加到您的 .tfignore 文件中。

这样,至少非常清楚该列表中的项目尚未评估并且很可能需要包括在内。

您可能还想通过打开File/ Source Control/ Advanced/检查您的源代码控制绑定,Change Source Control Bindings...以确保所有项目都显示为绑定到源代码控制并且不显示任何错误。

一些额外的上下文

在 Git 以及其他源代码控制系统中,更改通常不会自动挂起。这是为了防止您意外签入您不打算签入的内容。在 Git 中,您需要显式调用git add以将更改标记为您打算提交的更改。除非您这样做,否则更改将被视为“未跟踪”,这本质上是 TFVC 的“排除更改”功能。

Subversion (SVN) 具有类似的行为,其中更改的文件被标记为未版本化,需要通过调用显式添加svn add

所以这对于源代码控制系统来说并不是很奇怪的行为。它实质上使能够控制您的资源

于 2015-05-12T16:12:04.340 回答
2

想给出另一种排除文件的情况。如果您从模板中添加项目或将新项目添加到包含默认名称(如“MainWindow”)的项目中,则在提交更改之前重命名或删除该文件。“MainWindow”将在排除的更改中,具有新名称的项目将在包含的更改中。在这种情况下,您可以安全地删除它们。

于 2016-09-07T19:35:52.160 回答