# 5. Clients and GitHub vs Unity Version Control
**Target:** Unity 6000.5+. Part of [[Version Control]].
## Git clients compared
You can mix clients on one repo — they all speak Git. Pick defaults for the team, keep CLI available for LFS locks and `mergetool`.
### GitHub Desktop
**Best for:** visual commit/push, onboarding, Marshall’s existing quickstarts.
- Download: https://desktop.github.com/
- Strengths: clear diff list, publish/clone flows, LFS-aware clone/push for GitHub remotes.
- Weaknesses: limited advanced merge-tool control vs raw Git; rebases/conflict strategies are simpler; hard scene merges still want CLI + UnityYAMLMerge.
Walkthroughs already in the vault:
- [[Setting Up GitHub for Unity]]
- [[Connecting an Existing Unity Project to a New GitHub Repository Using GitHub Desktop]]
### Git CLI
**Best for:** precise staging (`git add -p`), rebase, LFS lock/unlock, `git mergetool`, history surgery, CI scripts.
```bash
git status
git diff --stat
git add Assets/Prefabs/Player.prefab Assets/Prefabs/Player.prefab.meta
git commit -m "Player: expose footstep SO reference"
git lfs locks
git mergetool --tool=unityyamlmerge -- Assets/Scenes/Level_01.unity
```
Install Git for Windows: https://git-scm.com/downloads
LFS: https://git-lfs.com/
### IDE / Editor integrations
| Integration | Fit |
|---|---|
| **JetBrains Rider** Git toolwindows | Excellent for code reviews, partial commits, annotate; still use CLI for UnityYAMLMerge |
| **Visual Studio** Git | Fine for code; watch that generated `.csproj` / `.sln` stay gitignored ([[1. Serialization Meta and Gitignore]]) |
| **VS Code / Cursor** Git & GitLens-style UIs | Convenient staging; configure mergetool externally for `.unity` |
| **Unity Editor Version Control package / UVCS plugin** | Different stack — see UVCS below, not “Git inside Unity” by default |
**Rule:** code conflicts → IDE merge UI is fine. **Scene/Prefab conflicts → UnityYAMLMerge** ([[3. UnityYAMLMerge Smart Merge]]).
### Other GUIs
Unity documents SourceTree and TortoiseGit mergetool wiring on the Smart merge pages. Use them if the team already standardized; otherwise Desktop + CLI covers most Unity class / indie setups.
---
## Git + GitHub vs Unity Version Control (UVCS)
**Unity Version Control** is the current name for what was **Plastic SCM**. Official hub: https://docs.unity.com/en-us/unity-version-control
### Side-by-side
| Concern | Git + GitHub (+ LFS) | Unity Version Control |
|---|---|---|
| **Mental model** | Distributed snapshots, branches, PRs | Centralized and/or distributed; strong checkout/lock story |
| **Large binaries** | Git LFS (quotas, pointers, migrate pain) | First-class large file / binary workflows |
| **Exclusive edit** | LFS locks (optional, social) | **Smart Locks** / exclusive checkout ([docs](https://docs.unity.com/en-us/unity-version-control/smart-locks)) |
| **Artist UX** | Desktop/CLI can feel code-centric | **Gluon** workflow aimed at artists (subset download, lock, submit) |
| **Scene merge** | UnityYAMLMerge via Git mergetool | Configure UnityYAMLMerge in UVCS client merge tools ([Smart merge](https://docs.unity.com/en-us/engine/7000.0/manual/get-started/project-configuration/version-control/smart-merge)) |
| **Ecosystem** | GitHub Actions, huge tool landscape, student familiarity | Unity Dashboard users/roles, UVCS code review, Unity ecosystem focus |
| **Cost / hosting** | GitHub plans + LFS bandwidth/storage | Unity / UVCS licensing & cloud orgs (check current Unity terms) |
| **Interop** | Native Git everywhere | UVCS can interact with Git in some migration/sync scenarios ([Migrating from Git](https://docs.unity.com/en-us/unity-version-control/migrating-from-git)) — evaluate carefully; not a free “both at once” workflow |
### When Git + GitHub fits (typical for this vault’s Pipelines track)
- Solo developer, class projects, small engineering-heavy teams.
- You already teach/use GitHub PRs and Actions (CI is a **future** Pipelines topic — not linked yet).
- Text-first project (code, YAML scenes, modest binary footprint) with disciplined Prefab isolation.
- You want maximum portability (clone anywhere Git exists).
### When UVCS fits
- Heavy **binary** production (cinematics, huge FBX/PSD churn) where LFS quotas or lock UX become the bottleneck.
- Mixed **artist + engineer** teams that benefit from Gluon + Smart Locks.
- Org already standardized on Unity Dashboard / UVCS cloud.
- You want exclusive checkout as a **default** safety property for non-mergeable assets.
### Hybrid honesty
Some studios keep code-ish workflows in Git and art in another system — that split has coordination cost (two sources of truth). Prefer **one** primary VCS for a given project unless you have dedicated DevOps. UVCS↔Git bridges exist for migration; treat them as projects, not casual toggles.
### Editor Mode reminder
- **Visible Meta Files** — Git (and most external VCS).
- **Unity Version Control** / **Perforce** — Editor integrates with that system’s checkout semantics; Smart Merge UI options differ ([Version control](https://docs.unity3d.com/6000.5/Documentation/Manual/VersionControl.html)).
---
## Practical recommendation (Marshall / teaching context)
1. **Default student & personal pipelines:** Git + GitHub, Desktop for daily, CLI for LFS + mergetool.
2. Document Force Text + Visible Meta + Unity `.gitignore` on day one ([[1. Serialization Meta and Gitignore]]).
3. Add LFS when binaries approach GitHub’s warning/block thresholds ([[2. Git LFS]]).
4. Mention UVCS in class as the Unity-native alternative when teams hit binary/lock walls — point at official UVCS docs rather than hand-waving Plastic nostalgia.
## Next
[[6. Pitfalls]] — the failure modes that waste days.
## See also (hands-on UVCS)
- [[UVCS]] — step-by-step UVCS lab set under `Version Control/UVCS/`