Skip to main content
Gat combines three configuration layers. Local overrides project; project overrides global. Reads show the from all layers. --global, --project, and --local choose where a command writes; project is the default .

What inherits?

A complete named definition comes from one layer. Omitted optional fields use that resource’s defaults, not fields from a lower layer. For example, a local selection’s path never inherits a project’s include or exclude patterns. An empty collection such as selections: {} adds no overrides; it does not clear inherited names or defaults. Removing a named override can reveal the lower-layer definition again.

Share definitions, choose your default

1

Share a definition

Save the selections in project configuration:
gat.yaml (excerpt)
2

Choose your default locally

Only the choice is saved locally:
.gat/gat.yaml (excerpt)
The project still supplies the training definition. Project updates to it apply automatically. A local definition also named training would replace it completely. A refers to a named definition. Adding a selection or remote never chooses a default. Choose explicitly with gat selection default or gat remote default, followed by the name. Unknown selection names and dangling selection defaults are errors. With no default selection, supported commands select the whole repository.
gat selection is experimental. Use --selection NAME for a single operation, or supply a complete inline selection with --path, --include, and --exclude. Named and inline selectors cannot be combined. See Path selection.

Update or restore inheritance

Use gat config for general settings, and gat selection, gat remote, gat route, or gat mount for named resources. An explicit update preserves omitted fields within the saved definition being edited. Updates require that definition in the selected scope and reject one hidden by a higher-priority definition. Use add --local with a complete definition to create a local override. Unsetting a default restores inheritance; it does not select an unrestricted repository:
To save an unrestricted selection, add a named selection with --path . and no filters, then choose it as the default. Removing a selection or remote is rejected if it would leave the effective default dangling. For general list settings, --clear writes an empty list where allowed; --unset removes the key and restores inheritance. For example, gat config git.ignore_patterns --local --unset restores inherited custom ignore patterns.

Check what is active

See the configuration reference for individual settings.