Branches And Remotes
Graft follows Git’s branch and remote shape closely enough that common workflows should feel familiar.
Branches
Section titled “Branches”A branch is a named ref under .graft/refs/heads/:
graft branch feature/searchgraft switch feature/searchgraft switch -c experiment mainSwitching branches materializes tracked database snapshots and file artifacts from the target commit into the worktree.
Remote-Tracking Refs
Section titled “Remote-Tracking Refs”Fetching from a remote updates refs under:
refs/remotes/<remote>/<branch>Fetch does not change the current branch:
graft fetch origin maingraft fetch --all originPull combines fetch with either fast-forward or merge:
graft pull origin mainIf the current branch has an upstream, graft pull can infer the remote and
branch. A non-fast-forward pull enters merge state and records conflict stages
in the index.
Push uploads repository objects, SQLite storage, external payloads, and refs:
graft push origin maingraft push --all origin--force allows deliberate non-fast-forward ref updates.
Clone initializes a new worktree from a remote branch:
graft clone fs:///srv/graft/app mainIt configures origin, fetches history, sets upstream tracking, and
materializes the selected branch.
Remote Backends
Section titled “Remote Backends”Graft remotes can use a filesystem path, S3-compatible object storage, or the Graft HTTP protocol:
fs:///srv/graft/apps3_compatible://bucket/prefix?endpoint=https://...https://host/org/spaceSee Sync With Remotes for workflows and Remote URIs for URI syntax.