有许多事情可能会导致“更改”被排除在外:
- 默认情况下,团队资源管理器将忽略
obj/*
和bin/*
其他一些文件夹中的文件。以及某些扩展名,例如.csproj.user
.
- 它们未加载到您当前的解决方案中,因此 Team Explorer 假定它们是作为不同解决方案的一部分制作的,并且您不想将它们与与您所在的上下文匹配的更改一起签入。
- 它们是在不同的工作区中制作的,Team explorer 再次假设您要签入在逻辑上有意义的文件组。
- 它们被手动从当前签入中排除。当您想首先签入一个修复了 Bug 123 的文件,然后签入另一组修复了 Bug 124 的文件时,您可以这样做。
- 在 Visual Studio 之外创建的文件永远不会自动添加,因此当您压缩一组 .cs 文件并且该 zip 文件最终出现在您的工作区文件夹中时,Team Explorer 会检测到它,但不会自动添加它。
- 这里可能会出现最后一个问题,如果由于某种原因尚未将项目添加到源代码管理中,或者解决方案文件中的绑定未正确签入,则添加到该项目的任何文件都将被忽略同样,因为 Visual Studio 假定该项目不应处于源代码控制之下。
- 使用“添加现有项目”不会自动将该项目置于与解决方案相同的源代码管理绑定之下。这将导致团队资源管理器假设为 6。
- 该路径之前可能已被“隐藏”或“未映射”,在事实之后映射文件夹不会告诉团队资源管理器添加它们。
- 您可能一直在脱机工作并使用服务器工作区。当您告诉 Team Explorer 重新联机时,您需要确保所有添加都正确完成。本地工作区没有这个问题,因为它可以在本地跟踪更改而无需与服务器对话。
- 您可能已从解决方案资源管理器(或单个项目或项目)或源代码管理资源管理器中的子文件夹中选择“签入待处理的更改”。当您这样做时,团队资源管理器将“待定更改”窗口的范围限定为仅与该上下文匹配的项目。所有其他更改都暂时移至“排除的更改”部分。
您应该检查 Excluded Changes 列表并使用您的.tfignore
文件忽略它们。您也可以从 UI 中执行此操作,方法是右键单击此类排除的更改并选择通过路径/扩展名或模式忽略的选项。
基本上,如果您在“排除文件”部分看到内容,请右键单击/包含它们或将它们添加到您的 .tfignore 文件中。
这样,至少非常清楚该列表中的项目尚未评估并且很可能需要包括在内。
您可能还想通过打开File/ Source Control/ Advanced/检查您的源代码控制绑定,Change Source Control Bindings...以确保所有项目都显示为绑定到源代码控制并且不显示任何错误。
一些额外的上下文
在 Git 以及其他源代码控制系统中,更改通常不会自动挂起。这是为了防止您意外签入您不打算签入的内容。在 Git 中,您需要显式调用git add
以将更改标记为您打算提交的更改。除非您这样做,否则更改将被视为“未跟踪”,这本质上是 TFVC 的“排除更改”功能。
Subversion (SVN) 具有类似的行为,其中更改的文件被标记为未版本化,需要通过调用显式添加svn add
。
所以这对于源代码控制系统来说并不是很奇怪的行为。它实质上使您能够控制您的资源。