Why Unreal projects need dedicated source control
Unreal projects combine text (C++, .ini, .json) and very large binaries (.uasset, .umap, textures, builds). Git handles the text side well and the binary side poorly. Git LFS patches some of that, but introduces pointer-file foot-guns and bandwidth billing that scales badly.
This guide walks through setting up USourceControl for an Unreal project from scratch. Setup itself takes about five minutes; your first full upload depends on project size. You only do it once per project.
Step 1: Prepare your project
There is almost nothing to do here. Close the Unreal Editor before you link the project: editor locks on generated files can interfere with the initial scan. That's it.
.uproject, the desktop app detects it and writes an Unreal .gitignore for you if the folder doesn't already have one. These are excluded from the very first commit:YourProject/
├── Saved/ # excluded (logs, crash dumps)
├── Intermediate/ # excluded (build intermediates)
├── DerivedDataCache/ # excluded (cooked asset cache)
├── Binaries/ # excluded (compiled DLLs)
├── Build/ # excluded (packaging output)
└── .vs/ # excluded (Visual Studio state)What gets versioned: Content/, Config/, Source/, Plugins/, and the .uproject file. If your project already has a .gitignore, it is left alone and used as-is — you can edit the exclusion list at any time from the app's settings.
One thing worth checking if you bring your own exclusions: don't ignore __ExternalActors__/ or __ExternalObjects__/. Plenty of older community gitignores still list them from pre-OFPA days, and on modern UE5 that means losing your level data on every commit.
Step 2: Create a USourceControl project
Create your first project to get set up. Once your account is ready, on the dashboard:
- Create a new organization if you don't have one.
- Click New project. Pick a name. It doesn't need to match your local folder name.
- Copy the project key (starts with
usc_). You'll paste it into the desktop app next.
Step 3: Link the desktop app to your project
Download the desktop app from usourcecontrol.com/download. On first launch:
- Click Link project.
- Paste the project key from Step 2 (you can find it again in the web dashboard under the project's settings). The desktop app authenticates with this key; there is no separate sign-in.
- Browse to your Unreal project folder (the one containing the .uproject file).
- Confirm.
This is the point where the app auto-detects the Unreal project and writes the exclusions described in Step 1. You don't need to configure .gitignore-style exclusions manually, and you don't need to have deleted anything by hand.
Step 4: First commit
The app scans your project folder. You'll see a list of all files to be versioned, likely several thousand, plus any large binaries. Review the list:
- Verify nothing from
Saved/orIntermediate/is in the list. - Confirm your .uproject, Content/, Config/, and Source/ files are present.
- Type a commit message. "Initial project state" is fine.
- Click Commit.
The first commit uploads every file, so it takes a while on large projects (a 50 GB project on a 100 Mbps connection takes ~70 minutes). Subsequent commits are incremental and usually complete in seconds.
Step 5: Invite your team
From the dashboard, open the Members section of your organization. Invite teammates by email; they get a magic link, install the desktop app, and join your project.
On their first sync, the app downloads the full project state to a folder they choose, usually a fresh Unreal project directory. After the initial sync, they open the .uproject in Unreal and work normally.
Role assignments are straightforward:
- Owner: billing and org-level control.
- Admin: can invite members, create and manage projects, and manage project keys. No billing access.
- Member: commits and syncs within assigned projects.
Step 6: Blueprint locking workflow
Unreal blueprints are binary .uasset files. They can't be merged, so when two people edit the same blueprint concurrently, only one person's work survives. Locking prevents this.
The flow, every time you edit a blueprint or level:
- Open the desktop app, find the blueprint in the file tree.
- Click Lock. Optionally type a reason.
- Open the file in Unreal Editor, make your changes, save.
- Back in the desktop app, click Commit. The lock is released automatically after a successful commit.
For a deeper treatment see Blueprint merge conflicts and how to avoid them.
Troubleshooting common issues
First commit is slow.It's uploading the full project. A 50 GB project over a 100 Mbps upload takes around 70 minutes. Let it finish in the background.
App says a file is locked but I don't see the lock. Refresh the project view. Locks are server-authoritative; your client may be behind.
Someone has an old lock they forgot about. The quickest fix is to ask them to release it from their desktop app, or to commit the file. Org owners and admins can also break a lock through the locks API with force: true.
A commit is rejected as locked.Someone else holds a lock on one of the files you're pushing. The error names the files and who holds them; commit the rest, or wait for them to release.
Frequently asked
Do I need to configure any Unreal Editor settings?
No. Today USourceControl works through the desktop app, which sits alongside the editor, so there is no Editor source control provider to enable. An in-editor plugin is in development; it will talk to the desktop app rather than replace it, and this workflow will keep working either way.
Does this work with UE4 and UE5?
Yes. The process is identical for both. USourceControl is engine-version agnostic. It operates on your file tree, not engine internals.
Should I put my C++ source in USourceControl or keep it in Git?
Either works. Many teams keep engine code in Git for PR review and use USourceControl for content. Others put everything in USourceControl. Both are valid.
What happens to the Derived Data Cache?
DerivedDataCache/ is excluded by default. It's regenerated on first Editor open from the actual asset files. Teammates who sync fresh will have Unreal rebuild their DDC automatically.
How do I bring existing project history across?
Most teams commit their current working copy as the first version and keep the old system read-only for reference, which costs nothing and covers the 'how did we do X in 2022' case. If you genuinely need history preserved inside USourceControl, that's a scoped paid service for Studio and Enterprise customers — contact us before you migrate.