VRC Git Manager is an Editor-only Unity package for managing local Git and Git LFS history in VRChat avatar projects.
Initial commit..gitignore and Git LFS .gitattributes managed sections.Assets/_Project/Avatars, Assets/Vendor, per-target templates, and a starter Scene for each target.Assets/Vendor.Assets/Vendor without including target changes..git/lfs/objects.VRC Git button in the Scene view.The VRC Git overlay is visible at the upper-right of the Scene view by default. It can be moved or hidden with Unity’s Overlay menu. Mekabu > VRC Git Manager remains available as a fallback.
For daily work, the window keeps the working-tree state and target-scoped commit controls visible. Healthy Git/LFS diagnostics, one-time initialization, target/Scene creation, and offline backup controls are collapsed by default; configuration problems remain visible until resolved. UnityPackage and Vendor controls remain expanded for the import workflow.
Daily actions are grouped into large cards for avatar commits and UnityPackage/Vendor work. Preview, import, and commit actions use labeled Unity icons and larger hit areas; compact icon-only buttons are reserved for refresh actions and include tooltips. Destructive import undo remains visually separated with warning coloring.
Target differences, Vendor differences, and operation results are shown in fixed-height, read-only panes. Each pane scrolls vertically for long lists and horizontally for long asset paths, and new output starts at the top.
Unity .meta files remain tracked and are included in target and Vendor commits, but paths ending in .meta are omitted from on-screen difference and result lists. When a scope contains only .meta changes, the UI reports that those hidden changes will still be committed.
Shared is not a special dependency category. If a shared work area is useful, create Shared as a normal target. It is then stored under Assets/_Project/Avatars/Shared and uses the same target-scoped commit workflow as every other target.
Creating a target also creates Assets/_Project/Avatars/<target>/Scenes/<target>.unity from the packaged default Scene, containing a Main Camera and Directional Light. Scene switching is enabled and the managed Scene list is refreshed so the new Scene appears in the Hierarchy. Additional Scenes can be created from the 対象Scene section and remain part of the same target-scoped commit.
アバターSceneをHierarchyから切り替える is disabled before the first target is created and is enabled automatically by target creation. It can be disabled again at any time. When enabled, Scenes found directly or recursively below each target’s Scenes folder are listed in the Hierarchy. Opening one loads that managed Scene and unloads the other managed avatar Scenes. Scenes outside the managed target folders remain open. Switching is refused during Play Mode or while an untitled Scene is present, and modified Scenes use Unity’s standard save confirmation.
Gitを初期化してInitial commitを作成 first creates the managed project folders, initializes Git and Git LFS, and commits every allowlisted file. The allowlist contains .gitignore, .gitattributes, .githooks, Assets/_Project, and Assets/Vendor, including the Unity .meta files belonging to both asset directories. The operation is refused after the repository already has a commit.
Packages, ProjectSettings, and every other project path are intentionally not tracked. The repository therefore records avatar modifications and imported vendor assets, but it is not a complete restorable Unity project snapshot.
The guard is designed to prevent mistakes. It does not stop a repository owner from editing .git/config, bypassing hooks, using another Git executable, or uploading files with another application. Use managed operating-system and network controls when enforced data-loss prevention is required.
The backup command requires a clean worktree and creates <project>_git-backup_<yyyyMMdd-HHmmss>.zip outside the Unity project. Unsafe filename characters in the project directory name are replaced, and collisions receive a numeric suffix such as -2.
Before compression, the copied repository is checked with Git and Git LFS. The resulting ZIP is extracted into a separate verification directory and checked again, including the source HEAD, tracked worktree state, and recorded LFS object hashes. The window reports the current stage while the operation is running. A conventional <archive>.zip.sha256 checksum file is published beside the verified ZIP, and both paths plus the final SHA-256 are shown in the result. Final names are assigned only after both artifacts are ready; if sidecar publication fails, the ZIP is moved back to its partial recovery name when possible. Temporary directories are removed only after successful verification, and failures report retained recovery data for inspection.
This archive contains only Git-tracked files, repository history, and LFS data. It is not a complete Unity project backup and does not add ignored Packages, ProjectSettings, or other untracked paths.
Use UnityPackageを選んでVendorへインポート in the VRC Git Manager window. Interactive UnityPackage import windows are rewritten continuously so new Assets/... entries remain under Assets/Vendor/.... Packages already authored for Assets/Vendor keep their existing paths.
An item that already exists outside Vendor with the same GUID is excluded instead of being overwritten outside the tracked area. Items targeting Packages, ProjectSettings, or another non-Assets path are also excluded. Review the standard Unity import list before selecting Import, then use the Vendor preview and commit controls to record the result.
The most recent completed managed import can be reversed from 直前の管理インポートを取り消す. Before import, existing target files and .meta files are copied to Library/VRCGitManager/ImportUndo; new paths are recorded. Undo deletes assets that were new in the package and restores overwritten assets from that backup. If an imported asset or newly imported directory was changed afterward, the UI lists the changed paths and requires explicit confirmation before removing those changes. An imported asset moved outside Assets/Vendor must be moved back manually before undo. Starting and then cancelling another import does not discard the previous completed undo record.
This feature targets interactive imports in Unity 2022.3.22f1 and uses reflected Unity Editor internals. A non-interactive import started programmatically by another tool cannot be redirected or recorded for undo safely. If the required internals are unavailable, or the undo backup cannot be prepared, the managed import is disabled. The reflection technique is adapted from lilEditorToolbox 2.0.2 under the MIT license; see THIRD_PARTY_NOTICES.md.
VRC Git Manager is distributed under the MIT License. See LICENSE.md. Third-party attribution is listed separately in THIRD_PARTY_NOTICES.md.
com.mekabu.vrc-git-manager
https://github.com/00b7ce/vrc-git-manager/blob/main/Packages/com.mekabu.vrc-git-manager/README.md
0.1.0 (Changelog)
2022.3 or later
No dependencies
No dependencies
No legacy packages
Mekabu