vendor/models. Your repository the snapshot it consumes.
Mounts are experimental. “Read-only” refers to , not filesystem
permissions: tools can still edit these working files, but
gat add, gat rm,
and gat mv cannot change mount-owned entries.Before you start
Initialize the destination withgat init. You need access to the source Git
repository for metadata, and its Gat storage for bytes. The source must have
committed its lock and uploaded the referenced objects. See
how Git metadata and Gat storage work together.
Mount and use upstream data
Replace the source URL below with your asset repository.1
Import the snapshot
models is the mount name; vendor/models is its target directory.
Without a target, Gat uses the source repository name (model-assets/).2
Check storage setup
The source has no default remote
The source has no default remote
Configure storage using the URL supplied by the asset publisher:Git authentication and storage credentials are separate.
3
Restore the working files
4
Commit the snapshot
gat init and gat pull. Source Git access is needed
again when creating or refreshing a mount, not for ordinary pulls.Mount only the data you need
Use source filters when adding a mount, or change the existing one:--path is relative to the source repository. Include and exclude patterns
are relative to that path; exclusions win. The destination stays vendor/models.
Omitted settings are preserved. Supplying an include or exclude list replaces
that list only. See Mount options to clear
saved filters. Repository named selections do not apply to mount source filters.
Pin the upstream version
Choose a revision when adding or updating a mount. Replace<commit-hash>
with the full hash for a fixed version:
Refresh mounted data
update chooses
the snapshot; gat pull fetches and restores its bytes.
Use path filters to preview which imported files
are selected, and review sync conflicts
if local edits prevent restoration.
Use an existing Gat remote
To choose a configured remote for this mount:--no-setup on add or update to skip remote and route changes for that
invocation. It cannot be combined with --remote.
Local modifications
Make shared asset changes in the source repository, then refresh the mount. To inspect local differences that affect reconciliation:Discard local edits and restore the snapshot
Discard local edits and restore the snapshot
Stop using a mount
- Remove tracking
- Keep local ownership
Routes and remotes are independent. Moving or removing a mount keeps them;
inspect gat route list before changing storage policy.
See routing precedence
to check which remote will serve the retained files.
Troubleshooting
The target is rejected
The target is rejected
Choose a non-root target that does not overlap another mount or contain
repository-owned Gat entries. Move or remove conflicting tracking first.
The metadata exists but files cannot be fetched
The metadata exists but files cannot be fetched
Check
gat mount show models for the effective route and remote. Verify
storage credentials separately from Git access. If objects are missing,
the publisher must upload them from the source repository.Upstream changed but my files did not
Upstream changed but my files did not
Run
gat mount update models, then gat pull --path vendor/models.
A fixed commit revision stays pinned until you change --rev.Mount reference
Source filters, revisions, targets, and removal options.
Storage routing
Choose where mounted paths fetch their bytes.

