How to resolve different GUIDs in versioning?

We’re using TFS (don’t have a team license) and in a recent changeset, one of our members checked in all of his .meta files for the first time. All of the GUIDs changed and after that changeset, all of the prefabs are broken for me (broken = can’t find the refered assets), but the changeset doesn’t break it for a third team member. In the following changeset, I checked in two scenes (i.e. the .unity files) and this is where all of the prefabs break for that third team member.

Does this mean Unity stores the GUIDs in the .unity files?

Now that we have different GUIDs for the same objects, how do we synchronize that?

Edit: turned out my colleague had the same problem characteristics as I did after all (i.e. it broke for him at the same changeset as for me, not one later), so the problem was easier simpler than I thought

Yes, Unity does store GUIDs in the .unity files. These reference the GUID in the .meta file associated with an asset.

The policy at my workplace is that if you add an asset to a project, then you must also check in the associated .meta file. If you only check in the asset, then when other people sync Unity will generate another .meta file with a different GUID.

As the advice from this page dictates: “When creating new assets, make sure both the asset itself and the associated .meta file is added to version control.”

To fix this, you’ll probably need to pick an authoritative version of the assets and meta files to put in source control. The other people should probably delete their Library folder, then do a force sync to grab the authoritative versions of the meta files. This should also pull along the .unity files with the correct GUID links.

And if possible, set your asset serialization mode to “Force Text” so that you have a hope of merging scene files and prefabs when that need arises.