TFS Source Control Doesn't Detect Local Changes

There is something you need to be aware of regarding the Get Latest feature in Visual Studio / Team Foundation Server: it doesn't detect local changes

For example, suppose you check a file into source control: 


Then you modify the file without checking it out:



When you return to Source Control Explorer,  it indicates you have the latest version even though the server version doesn't match the local version:



Other source control products such as Source Gear Vault monitor the file system for changes and can detect when a file has been changed locally.  Vault calls a file that has been changed locally a renegade file.



If you work exclusively in Visual Studio and can always check out the files you need to work with, you may never encounter this issue.  If, however, you work disconnected or want to test out something locally without locking files, you need to be aware of how TFS behaves. 


I can't stress the importance of this enough:  If you have local changes, Visual Studio will not pull down the latest copy from source control because it thinks it has the latest version already.   When you try to get the latest version from source control, you'll see this dialog:



When you want a mirror of source control locally, use the "Get Specific Version" feature instead.  Select "Latest Version" as the type, and check the option "Overwrite all files even if the local version matches the specified version":