Skip to main content
A Gat stores large-file bytes. It is separate from the Git remote that stores your commits and gat.lock. Run these commands inside a repository initialized with gat init. For the relationship between commits, storage, and working files, see How Gat works.
1

Add a storage location

Choose one example and replace its bucket, container, region, or path. Create cloud storage and configure provider credentials before transferring files. Local storage needs no cloud credentials.
Use an absolute path with three slashes. The directory must be accessible to each machine that will use this remote.
2

Select the default

Adding a remote never selects a default. Transfers use this default unless a route or --remote NAME selects another.
add validates configuration, and show displays it with secrets redacted. Neither proves connectivity or storage permissions.
3

Upload a tracked file

Replace this path with a file Git does not already track:
This uploads the object and checks remote presence. An empty selection or already-cached download is not an access test.
Network remotes require permission to list the configured storage root during the connection check, plus permission for the transfers you run.
4

Share the configuration

Remote changes use project configuration by default. Credentials belong in each user’s environment or provider credential store.
5

Verify from a fresh clone

In a fresh clone of the published repository:
Open the restored file to confirm download access and its contents. A local file:// remote must be accessible at its configured path.

Keep credentials out of Git

Prefer your provider’s credential environment or identity authentication. For a secret URL option, save a ${NAME} reference and single-quote the URL so your shell preserves it.
This Azure example replaces the existing remote URL. Supply the original token without extra URL encoding. Variables must be set when adding, changing, or using the URL. Read-only commands display redacted templates without expanding them.
Redacted output does not remove literal secrets from gat.yaml. See URL templates for syntax and credential examples.

Manage storage

Change or unset references to a remote before removing it. Use the scope that defines it; an update does not create a local override.
--local writes .gat/gat.yaml, which is not committed. --global writes user-wide settings. See Config inheritance.

Provider credentials

Authentication, endpoints, and connection troubleshooting.

Use multiple remotes

Route paths to different stores or copy objects to a backup.